Buscar Celda Vacía en Excel

Planteamiento:

Supongamos que tenemos en la columna 'A' de la hoja activa una lista de datos que se va incrementando conforme vamos añadiendo más valores. Queremos hacer un procedimiento en VBA que localice la siguiente celda vacía de la lista para introducir más datos. El procedimiento se llamará AñadirDatosLista y por el momento añadirá la cadena de texto 'Hola' a la última celda.

Procedimiento:



Explicación:

La instrucción Range("A65536").End(xlUp).Row lo que hace es que tomando como referencia la última celda de la columna 'A' sube hasta encontrar la última celda que contiene datos y la propiedad Row nos devuelve qué número de fila es. A continuación como se supone que estamos en la última celda con datos, lo que hacemos es pasar a la siguiente celda (estará vacía) y seleccionarla. Una vez realizada esta operación, introducimos la cadena 'Hola'.

Funcionamiento:

Este procedimiento funciona independientemente de la celda que esté activa (seleccionada) en ese momento, puesto que para buscar la celda siempre parte de la celda 'A65536' (la última celda de la columna A) e inicia el recorrido hacia arriba.


Discusión:

Continuando con el ejemplo anterior nos damos cuenta que dista mucho de ser un procedimiento optimizado. No controla todas las situaciones posibles. Por ejemplo, si ejecutamos el procedimiento y no existe al menos una celda con datos en la columna 'A', VBA dará un error en tiempo de ejecución. Por otra parte el código todavía se puede optimizar, reduciendo el número de instrucciones con el consiguiente aumento de velocidad (aunque esto no ocurre siempre). Veamos, en la instrucción Range("A65536").End(xlUp).Row el método End admite 3 argumentos más y que corresponden a las direcciones derecha, izquierda y abajo. Es decir, xlDown, xlToLeft y xlToRight. (ver el menú ayuda de VBA); por lo tanto también podríamos empezar a buscar celdas vacías tomando como referencia o celda base la 'A1' y seguir hacia abajo, quedando la instrucción de la siguiente forma: Range("A1").End(xlDown).Row

El procedimiento tendría las mismas limitaciones que al principio pero ahora sabemos encontrar la primera celda vacía de una columna, bien empezando por arriba o por abajo, y la primera celda vacía de una fila empezando por la izquierda o por la derecha. La instrucción anterior hace lo mismo que si desde el teclado nos situáramos en la celda 'A1' y pulsáramos la combinación de teclas FIN+FLECHA ABAJO (ver uso del teclado en el menú ayuda de Ecel). Podemos reescribir el procedimiento 'AñadirDatosLista' de la siguiente forma:



Y por último, lo mismo en una sola línea:

Profesor

Javier Marco Lledó