Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

¿CÓMO VOY A LA PRIMERA CELDA VACÍA EN UNA COLUMNA?

6,367 views
Skip to first unread message

lbenaventea

unread,
Jun 16, 2005, 6:14:06 PM6/16/05
to
En la columna D, las primeras 29 filas están llenas y quiero ir a la
siguiente (la primera celda vacía en esa misma columna) y ahí quiero insertar
una fila. Hice una macro así:
Range("D1").Select
Selection.End(xlDown).Select
Range("D30").Select
Selection.EntireRow.Insert
Funciona bien pero, si quiero usar la misma macro cuando, en vez de 29 filas
llenas tengo más (o menos) filas llenas, la macro no sirve: no me conduce a
la primera celda no-vacía (me sigue llevando a celda D30...).
Gracias.

KL

unread,
Jun 16, 2005, 6:50:46 PM6/16/05
to
Hola lbenaventea,

Prueba el siguiente codigo:

Sub test()
[D65536].End(xlUp).Offset(1, 0).EntireRow.Insert
End Sub

Saludos,
KL


"lbenaventea" <lbena...@discussions.microsoft.com> wrote in message
news:92E00186-548F-45DB...@microsoft.com...
> En la columna D, las primeras 29 filas estan llenas y quiero ir a la
> siguiente (la primera celda vacia en esa misma columna) y ahi quiero
> insertar
> una fila. Hice una macro asi:


> Range("D1").Select
> Selection.End(xlDown).Select
> Range("D30").Select
> Selection.EntireRow.Insert
> Funciona bien pero, si quiero usar la misma macro cuando, en vez de 29
> filas

> llenas tengo mas (o menos) filas llenas, la macro no sirve: no me conduce
> a
> la primera celda no-vacia (me sigue llevando a celda D30...).
> Gracias.


AndreaC

unread,
Jun 17, 2005, 1:27:10 AM6/17/05
to
Hola KL!
Yo tenia una duda similar y probe tu macro, pero no funciono (el insert row
lo esta haciendo siempre en la segunda fila).
Probando y probando llegue a esto:

Sub test()
Selection.End(xlDown).Offset(1, 0).EntireRow.Insert
End Sub

Basta con colocarse en la celda 1 de la columna deseada y listo.
Pero ahora me queda una duda a mi...
Considerando el siguiente ejemplo:
N O
1 XX Z
2 XX Z
3 XX Z
4 XX
5 XX
6 XX

Yo en vez de insertar, necesito que desde O1 llegue a O4, luego se mueva a
N4 y seleccione hasta la ultima celda con datos de esa columna (en este caso
N4:N6) y lo copie a su derecha (O4:O6).
Please considerar que esta macro la utilizare siempre para las mismas
columnas, pero no para los mismos rangos de filas.

Muchas Gracias!
AndreaC


"KL" escribió:

KL

unread,
Jun 17, 2005, 4:27:03 AM6/17/05
to
Hola AndreaC,

> tu macro... no funciono (el insert row


> lo esta haciendo siempre en la segunda fila).

Probablemente te has olvidado de de cambiar la referencia [D65536] por la de
la columna que quieres escanear y seguramente la columna [D] de tu tabla
esta vacia o tiene dato solo en la primera fila. Partiendo de tu ejemplo de
abajo prueba cambiar la instruccion a lo siguiente:

[O65536].End(xlUp).Offset(1, 0).EntireRow.Insert

> Probando y probando llegue a esto:
> Sub test()
> Selection.End(xlDown).Offset(1, 0).EntireRow.Insert
> End Sub
> Basta con colocarse en la celda 1 de la columna deseada y listo.

No es lo mismo. Si usas esta instruccion deberas tener en cuenta lo
siguiente:
- tu macro encontrara la primera celda en blanco en la columna del rango
seleccionado. Es decir si tienes celdas vacias intercaladas el macro no
insertara la fila al final de la lista sino en la primera celda vacia que se
le ponga delante.
- mi macro usaba una referencia fija a la columna [D], mientras que tu
codigo parte de la posicion de la celda activa.

> Yo en vez de insertar, necesito que desde O1 llegue a O4, luego se mueva a
> N4 y seleccione hasta la ultima celda con datos de esa columna (en este
> caso
> N4:N6) y lo copie a su derecha (O4:O6).
> Please considerar que esta macro la utilizare siempre para las mismas
> columnas, pero no para los mismos rangos de filas.

Prueba esto:

Sub test1()
Dim rng As Range
Set rng = Range([O65536].End(xlUp).Offset(1, -1), _
[N65536].End(xlUp).Offset(1, 0))
rng.Copy rng.Offset(0, 1)
End Sub

o esto

Sub test2()
Range([O65536].End(xlUp).Offset(1, -1), _
[N65536].End(xlUp).Offset(1, 0)).Copy _
Range([O65536].End(xlUp).Offset(1, -1), _
[N65536].End(xlUp).Offset(1, 0)).Offset(0, 1)
End Sub

Saludos,
KL


AndreaC

unread,
Jun 17, 2005, 9:51:07 AM6/17/05
to
Tienes TODA la razon, absolutamente toda la razon :D
Mis disculpas.
Y muchas gracias por las macros! Ambas funcionan perfecto!
Slds
An.

lbenaventea

unread,
Jun 17, 2005, 10:32:01 AM6/17/05
to
Para AndreaC y KL:
Les agradezco aunque aún no pruebo las soluciones porque, más que saber qué
instrucciones debo usar, me interesa saber cómo llego a ellas mediante el
mecanismo de crear la macro con «grabar nueva macro» dando los pasos
adecuados en la planilla. En el viejo Lotus, instrucciones Down o Up (o Left
o Right) conducían a la celda correspondiente a partir de una celda inicial;
en Excel, las flechas conducen siempre a esa misma celda, cualquiera sea la
celda inicial.
lbenaventea


"AndreaC" escribió:

KL

unread,
Jun 17, 2005, 12:28:29 PM6/17/05
to
Hola lbenaventea,

No estoy seguro de haber entendido tu ultimo mensaje, pero si la pregunta
es: ?donde pongo la instruccion [D65536].End(xlUp).Offset(1,
0).EntireRow.Insert ?, entonces la respuesta sera: En el mismo sitio donde
ahora tienes tu codigo (borrando el tuyo por supuesto):

Range("D1").Select
Selection.End(xlDown).Select
Range("D30").Select
Selection.EntireRow.Insert

Si lo que quieres saber es como copiar un codigo hecho (o sea no creado por
la grabadora de macros) a un modulo, prueba lo siguiente:

En este caso copiamos el codigo a un modulo estandar:
1) haz clic-derecho sobre el nombre de cualquier hoja en una de las pestañas
de la parte de abajo de la ventana de Excel.
2) Elige la opcion Ver Codigo para abrir el editor VBA.
3) Una vez en el Editor VBA, ve al menu Insertar>Modulo
4) En la ventana mas grande a la derecha pega el codigo:

Sub test()
[D65536].End(xlUp).Offset(1, 0).EntireRow.Insert
End Sub

5) Pulsa Alt+F11 para volver a la hoja
6) Pulsa Alt+F8
7) Haz doble-clic sobre "Test"

Saludos,
KL


"lbenaventea" <lbena...@discussions.microsoft.com> wrote in message

news:0AF8F3D2-C1DB-4653...@microsoft.com...
> Para AndreaC y KL:
> Les agradezco aunque aun no pruebo las soluciones porque, mas que saber
> que
> instrucciones debo usar, me interesa saber como llego a ellas mediante el


> mecanismo de crear la macro con <grabar nueva macro> dando los pasos
> adecuados en la planilla. En el viejo Lotus, instrucciones Down o Up (o
> Left

> o Right) conducian a la celda correspondiente a partir de una celda

> inicial;
> en Excel, las flechas conducen siempre a esa misma celda, cualquiera sea
> la
> celda inicial.
> lbenaventea
>
>

> "AndreaC" escribio:

0 new messages