La celda activa de Excel con VBA

De los millones de celdas contenidas en una hoja de Excel, solamente una de ellas será la celda activa en un momento determinado y estará identificada por un borde negro y su referencia aparecerá en el cuadro de nombres ubicado junto a la barra de fórmulas. En la siguiente imagen podremos ver que la celda activa es la celda B2:

La celda activa de Excel con VBA

Inclusive cuando seleccionamos un rango de celdas, solamente una de ellas será la celda activa. Por ejemplo, si selecciono el rango B2:D5, solamente la celda B2 tendrá el color blanco de fondo indicando que sigue siendo la celda activa, además de que su referencia seguirá apareciendo en el cuadro de nombres:

Celda activa en Excel

Si después de seleccionar un rango de celdas ingresas cualquier valor y pulsas la tecla Entrar, dicho valor será ingresado solamente en la celda activa. Si quisieras que un mismo valor fuera ingresado en todas las celdas del rango, entonces deberás ingresar el valor en la celda activa y pulsar la combinación de teclas Ctrl + Entrar.

Ya que la celda activa juega un papel de mucha importancia en Excel, es importante aprender a trabajar con dicha celda desde nuestro código VBA.

La celda activa en VBA

La celda activa en VBA está representada por la propiedad ActiveCell del objeto Application y es a través de dicha propiedad que podremos obtener mucha información sobre la celda activa de Excel. La propiedad ActiveCell nos devolverá un objeto Range que tendrá sus propias propiedades y métodos con los que podremos trabajar.

Por ejemplo, podemos utilizar la propiedad Address para obtener la dirección de la celda activa. Para nuestro primer ejemplo comenzaré por hacer clic derecho sobre la etiqueta de la hoja y seleccionaré la opción “Ver código”.

La celda activa en VBA

Posteriormente, de la lista desplegable de objetos, seleccionaré el objeto Worksheet y de la lista de procedimientos elegiré el evento SelectionChange e ingresaré una sola línea de código donde utilizaré la función MsgBox y la propiedad Address del objeto ActiveCell de la siguiente manera:

Qué es la celda activa en Excel

El evento SelectionChange será ejecutado cada vez que seleccionemos una celda diferente dentro de nuestra hoja y la función MsgBox mostrará un mensaje con la dirección de la celda activa. Al seleccionar una nueva celda con el teclado o el ratón obtendremos un mensaje como el siguiente:

Acceder a la celda activa desde VBA

Fila y columna de la celda activa

Si en lugar de obtener la referencia completa da la celda activa estamos interesados en obtener su fila o su columna, entonces podemos utilizar las propiedades Row y Column respectivamente. Para este ejemplo seguiré los mismos pasos de la sección anterior y colocaré el siguiente código en el evento SelectionChange:

Obtener la fila de la celda activa

Al cambiar la selección de celdas en nuestra hoja, obtendremos un mensaje que incluirá la fila y columna de la celda activa.

Obtener la columna de la celda activa

El valor de la celda activa

Para obtener el valor de la celda activa podemos utilizar la propiedad Value y para mostrarlo haré un ejemplo similar a los anteriores utilizando el siguiente código:

Obtener el valor de la celda activa desde VBA

Al seleccionar una nueva celda, y convertirla en la celda activa, observaremos un mensaje que desplegará su valor:

Celda activa Excel VBA

Si quieres modificar el valor de la celda activa deberás utilizar la misma propiedad pero haciendo una asignación con el símbolo igual. Por ejemplo, para hacer que la celda activa tenga la cadena de texto “Excel Total” debemos utilizar la siguiente línea de código:

ActiveCell.Value = "Excel Total"

Cambiar la celda activa desde VBA

Además de obtener información sobre la celda activa en Excel es común tener la necesidad de cambiar la celda activa desde código VBA. Para realizar esta acción no podemos utilizar la propiedad ActiveCell sino que debemos utilizar el método Activate de cualquier objeto Range. Por ejemplo, si queremos hacer que la celda B5 se convierta en la celda activa, podemos incluir la siguiente línea de código:

Range("B5").Activate

Ya que siempre estamos interactuando con la celda activa en Excel es importante familiarizarnos con la propiedad ActiveCell de manera que podamos acceder a su valor y propiedades desde nuestro código VBA. Puedes descargar el libro de trabajo que utilicé para crear los ejemplos anteriores y dar tus primeros pasos para controlar la celda activa utilizando código VBA.

Una vez que te familiarices con el trabajo de la celda activa te recomiendo leer dos artículos, el primero muestra cómo resaltar la celda activa en Excel donde podrás ver el uso de otras propiedades del objeto ActiveCell. El segundo artículo que te recomiendo leer habla sobre cómo resaltar la fila de la celda activa en Excel que es un ejemplo un poco más elaborado que terminará por hacerte un experto en el manejo de la celda activa desde VBA.