«Celda activa» es un término importante en Excel.
Aunque no necesita preocuparse por la celda activa cuando trabaja en la hoja de cálculo, es importante saber cuándo trabaja con VBA en Excel.
El uso correcto de la celda activa en Excel VBA puede ayudarlo a escribir un mejor código.
En este tutorial, primero expliqué qué es una celda activa y luego mostré algunos ejemplos de cómo usar una celda activa en VBA en Excel.
¿Qué es una celda activa en Excel?
Una celda activa, como sugiere el nombre, es la celda actualmente activa que se usa cuando ingresa un texto o una fórmula en Excel.
Por ejemplo, si selecciono la celda B5, B5 se convierte en mi celda activa en la hoja de cálculo. Ahora, cuando escribo algo desde mi teclado, se ingresará en esta celda porque es la celda activa.
Si bien esto puede parecer obvio, algo no es tan obvio aquí: si selecciona un rango de celdas, solo tendrá una celda activa incluso entonces.
Por ejemplo, si selecciono A1:B10, aunque tengo 20 celdas seleccionadas, solo tengo una sola celda activa.
Entonces, ahora, cuando empiezo a escribir cualquier texto o fórmula, se ingresará solo en la celda activa.
Puede identificar la celda activa observando la diferencia de color entre la celda activa en todas las demás celdas de la selección. Notará que la celda activa tiene un tono más claro que las otras celdas seleccionadas.

Otra forma rápida de saber qué celda es la celda activa es mirar el cuadro Nombre (el campo junto a la barra de fórmulas). La referencia de celda de la celda activa se muestra en el cuadro Nombre.

Cómo usar la celda activa en VBA en Excel
Ahora que he explicado qué es una celda activa en una hoja de cálculo en Excel, veamos cómo usar una celda activa en Excel VBA.
Propiedades y métodos de celdas activas
En VBA puede usar una celda activa de dos maneras:
- Para obtener la información al respecto (estas serán Propiedades)
- Para realizar una acción sobre él (estas serán Métodos:)
Aquí se explica cómo acceder a todas las propiedades y métodos de la celda activa en VBA:
- Abra un módulo en el editor de Excel VBA
- Escriba la frase ‘ActiveCell’
- Ingrese un punto (.) después de la palabra ActiveCell
Una vez que haga esto, notará que una serie de propiedades y métodos aparecen como una lista desplegable (esto se llama IntelliSense en Excel VBA).
En la lista desplegable que aparece verás dos tipos de opciones: la que tiene un icono verde y la que tiene un icono gris (con una mano).
El que tiene los iconos grises son las Propiedades y el que tiene los iconos verdes son los Métodos.
Algunos ejemplos de métodos son Activar, AgregarComentario, Cortar, Eliminar, Limpiar, etc. Como puede ver, estas son acciones que se pueden realizar en la celda activa.
Algunos ejemplos de propiedades son Address, Font, HasFormula, Interior.Color. Todas estas son propiedades de la celda activa que le brindan información sobre esa celda activa.
Por ejemplo, puede usar esto para obtener la dirección de celda de la celda activa o cambiar el color de la celda dentro de la celda.
Ahora veamos algunos ejemplos simples de código VBA que puede usar en su trabajo diario cuando trabaja con celdas activas en Excel
Convertir una celda en la celda activa
Para convertir una celda en la celda activa, primero asegúrese de que esté seleccionada.
Si solo ha seleccionado una sola celda, será la celda activa por defecto.
A continuación se muestra el código VBA para hacer que la celda B5 sea la celda activa:
Sub Change_ActiveCell() Range("B5").Activate End Sub
En el código de VBA anterior, primero especifiqué la dirección de celda de la celda que quiero activar (es decir, B5) y luego utilicé el método de activación para convertirla en la celda activa.
Si desea que solo una celda sea la celda activa, también puede usar el método de selección (código a continuación):
Sub Change_ActiveCell() Range("B5").Select End Sub
Como dije antes, solo puede tener una celda activa incluso si ha seleccionado un rango de celdas.
Con VBA, puede seleccionar primero un rango de celdas y luego convertir una de esas celdas en la celda activa.
Debajo del código VBA que seleccionaría primero el rango A1: B10 y luego convertiría la celda A5 en la celda activa:
Sub Select_ActiveCell() Range("A1:B10").Select Range("A5").Activate End Sub
Borrar la celda activa
A continuación se muestra el código de VBA que hace que la celda A5 sea la celda activa primero y luego borra su contenido (tanto el contenido de la celda como cualquier formato aplicado a la celda).
Sub Clear_ActiveCell() Range("A5").Activate ActiveCell.Clear End Sub
Tenga en cuenta que le mostré el código anterior para mostrarle cómo funciona el método claro con celdas activas. En VBA, no siempre necesita seleccionar o activar la celda para ejecutar un método en ella.
Por ejemplo, también puede borrar el contenido de la celda A5 con el siguiente código:
Sub Clear_CellB5()
Range("A5").Clear
End Sub
Obtener el valor de la celda activa
Debajo del código VBA, podría mostrar un cuadro de mensaje con el valor en la celda activa:
Sub Show_ActiveCell_Value()
MsgBox ActiveCell.Value
End Sub
Del mismo modo, también puede usar un código VBA simple para mostrar la dirección de celda de la celda activa (código a continuación):
Sub Show_ActiveCell_Address() MsgBox ActiveCell.Address End Sub
El código anterior mostraría la dirección en referencia absoluta (como $A$5).

Dar formato a la celda activa (color, borde)
Debajo del código VBA que haría que la celda activa fuera de color azul y cambiaría el color de la fuente a blanco.
Sub Format_ActiveCell() 'Makes the active cell blue in color ActiveCell.Interior.Color = vbBlue 'Changes the cell font color to white ActiveCell.Font.Color = vbWhite End Sub
Tenga en cuenta que utilicé el incorporado constante de color (vbAzul y vbBlanco). También puede utilizar el RGB constante. Por ejemplo, en lugar de vbRed, puede usar RGB (255, 0, 0)
Compensación de la celda activa
Con VBA en Excel, puede hacer referencia a las celdas en relación con la posición de la celda activa (se llama desplazamiento).
Por ejemplo, si mi celda activa es la celda A1, puedo usar la propiedad de desplazamiento en la celda activa y hacer referencia a la celda debajo especificando la posición de esa fila que corresponde a la celda activa.
Dejame mostrarte un ejemplo.
Sub Offset_From_ActiveCell() 'Make cell A1 the Active Cell Range("A1").Activate 'Goes One cell Below the Actice Cell and Enters the text Test in it ActiveCell.Offset(1, 0).Value = "Test" End Sub
El código anterior activa primero la celda A1 y la convierte en la celda activa. Luego usa la propiedad de desplazamiento en la celda activa para hacer referencia a la celda que se encuentra una fila debajo de ella.
Y en la misma línea del código, también asigné un valor «Prueba» a esa celda que está una fila debajo de la celda activa.
Le mostraré otro ejemplo donde se puede usar la compensación de la celda activa en un escenario práctico.
A continuación, tengo un código VBA que activa primero la celda A1 y luego usa la propiedad de compensación para cubrir 10 celdas debajo de la celda activa e ingresar números del 1 al 10 en la celda A1: A10.
Sub Offset_From_ActiveCell() 'Activates cell A1 Range("A1").Activate 'Loop to go through 10 cells below the active cell and enter sequential numbers in it For i = 1 To 10 ActiveCell.Offset(i - 1, 0).Value = i Next i End Sub
El código anterior usa un bucle For Next que se ejecuta 10 veces (y cada vez incrementa el valor de la variable ‘i’ en 1). Y dado que también uso ‘i’ en la propiedad de desplazamiento, sigue bajando una celda en cada iteración.
Obtenga el número de fila o columna de ActiveCell
Debajo del código VBA que muestra el número de fila de la celda activa en el cuadro de mensaje:
Sub ActiveCell_RowNumber() MsgBox ActiveCell.Row End Sub
Y el siguiente código le muestra el número de columna en un cuadro de mensaje:
Sub ActiveCell_ColumnNumber()
MsgBox ActiveCell.Column
End Sub
Asignar valor de celda activa a una variable
También puede usar VBA para asignar la celda activa a una variable. Una vez hecho esto, puede usar esta variable en lugar de la celda activa en su código.
¿Y cómo ayuda esto? ¡Buena pregunta!
Cuando asigna la celda activa a una variable, puede continuar usando esa variable en lugar de la celda activa. La ventaja de esto es que, a diferencia de la celda activa (que puede cambiar cuando se activan otras hojas de trabajo o libros de trabajo), su variable continúa haciendo referencia a la celda activa original a la que fue asignada.
Entonces, si escribe un código VBA que se desplazará por cada hoja de trabajo y activará esas hojas de trabajo, mientras que su celda activa cambiará a medida que se activen nuevas hojas, la variable a la que asignó la celda activa inicialmente no cambiará.
A continuación se muestra un código de muestra que define una variable ‘varcell’ y asigna la celda activa a esta variable.
Sub Assign_ActiveCell() Dim varcell As Range Set varcell = ActiveCell MsgBox varcell.Value End Sub
Seleccionar un rango de celdas de la celda activa
Y lo último que quiero mostrarles sobre el uso de celdas activas en Excel VBA es seleccionar un rango completo de celdas a partir de la celda activa.
Un uso práctico de esto puede ser cuando desea formatear rápidamente un conjunto de celdas en cada hoja de su libro de trabajo.
A continuación se muestra el código VBA que seleccionaría celdas en 10 filas y 10 columnas a partir de la celda activa:
Sub Select_from_Activecell()
Range(ActiveCell, ActiveCell.Offset(10, 10)).Select
End Sub
Cuando especificamos dos referencias de celda dentro de la propiedad Rango, VBA se refiere al rango completo entre esas dos referencias.
Por ejemplo, Rango(Rango(“A1”), Rango(“A10”)).Seleccionar seleccionaría la celda A1:A10.
De manera similar, lo he usado con una celda activa, donde la primera referencia es la propia celda activa y la segunda referencia desplaza la celda activa en 10 filas y 10 columnas.
Espero que este tutorial haya sido útil para comprender cómo funcionan las celdas activas en Excel VBA.
Otros tutoriales de Excel que también pueden resultarle útiles: