Cómo seleccionar la celda siguiente a una tabla con VBA


Normalmente al ejecutar macros no solo necesitamos conocer la última fila de un rango de celdas en Excel, si no que necesitamos que nuestra macro seleccione la celda de debajo del mismo rango. Para ello, vamos a ver tres formas distintas de poder seleccionar la siguiente celda a la última fila del rango:

1- Seleccionar la celda debajo de un rango de celdas contiguas

Para hacer esta selección, debemos conocer la instrucción Offset. Esta instrucción nos hace movernos las filas y/o columnas que deseemos a partir de un lugar concreto.

En este caso, si empleáramos el código sin la parte Offset, quedaría así:



Range("A1").End(xlDown).Select

Este código, simplemente nos seleccionaría la última celda de la tabla por la columna A. Por ello, una vez en esa celda, querremos mover la selección 1 fila hacia abajo y 0 columnas hacia derecha o izquierda.


Range("A1").End(xlDown).Offset(1,0).Select


Selección_celda_siguiente_1


Advertencia

Esta forma de selección solo la podremos usar si sabemos que no va a haber ninguna celda vacía en medio del rango, ya que si la empleamos, seleccionaría la celda siguiente a la primera que se encontrara en blanco:


Selección_última_celda_error_fila_blanco

Por ello, en el caso de que haya o pueda haber celdas en blanco en medio de un rango de Excel, deberemos emplear una de las 2 formas siguientes.


2-   Seleccionar la celda debajo de un rango de celdas no contiguas con Offset

Para esta forma de selección, se debe conocer antes de nada cuál es la última fila del rango de celdas. Seguidamente, podemos seleccionar la última celda con información del rango en cuestión, pero le añadimos Offset para movernos una fila hacia abajo y cero a la derecha.


Dim ultimafila As Long
ultimafila = Range("A" & Rows.Count).End(xlUp).Row
Range("A" & ultimafila).Offset(1, 0).Select

En este caso, primero ha tomado el valor 6 para la última fila, después selecciona la celda A6 y por último se mueve 1 fila hacia abajo y 0 hacia la derecha.
Selección_última_celda_con_offset_y_ultimafila



3-   Seleccionar la celda debajo de un rango de celdas no contiguas 

Por último una forma que personalmente me gusta bastante es la de sumar 1 a la variable declarada de última fila. En este caso, no voy a llamar a la variable ultimafila para no liarme con el ejemplo anterior, ya que lo que buscamos es la siguiente a esta. Voy a llamarla con la letra w.

En este caso, la última fila del rango devolvería el número 6, como en el caso anterior, pero al yo sumarle 1, tenemos que la variable w es igual a 7, lo que me permite tener identificada la última fila vacía siguiente al rango.


Dim w As Long
w= Range("B" & Rows.Count).End(xlUp).Row + 1
Range ("A" & w).Select

El resultado es el mismo que en la forma 2





No hay comentarios:

Publicar un comentario

Otras entradas