Resaltar la celda activa en Excel

Hace algunas semanas escribí un artículo sobre cómo resaltar la fila de la celda activa y hoy he decidido hacer un ejemplo similar, pero solo para resaltar la celda activa en Excel. También implementaremos el código VBA necesario para mantener los colores originales de las celdas aún después de haberlas resaltado con un color diferente.

El objeto ActiveCell en VBA

Para alcanzar nuestro objetivo haremos uso del objeto ActiveCell que siempre apunta a la celda activa, y para resaltar dicha celda modificaremos su propiedad Interior.Color de la siguiente manera:

ActiveCell.Interior.Color = RGB(153, 204, 0)

La función RGB nos devolverá un valor entero que representará la combinación de colores rojo, verde y azul indicados como argumentos de la función. Aunque esta es la única instrucción VBA que necesitamos para resaltar la celda activa en Excel, será necesario implementar funcionalidad adicional para restablecer el color de la celda una vez que haya dejado de ser la celda activa.

Definir variables globales

El primer paso será definir las variables que nos ayudarán a tener una ”memoria” que nos permita recordar la última celda activa así como su color de relleno antes de ser resaltada por nuestro código. Esto será de gran importancia para restablecer el color original de la celda o de lo contrario terminaríamos con todas las celdas del mismo color al ir activando cada una de ellas.

Comenzaremos por abrir el Editor de Visual Basic (Programador > Código > Visual Basic) y haremos clic derecho en VBAProject para elegir la opción  Insertar > Módulo. Una vez creado el módulo de código insertaré dos líneas como las siguientes:

Resaltar la celda activa en Excel

La variable CeldaAnterior almacenará la referencia a la última celda activa y la variable ColorAnterior tendrá el color de relleno de dicha celda. Ambas variables han sido declaradas como Public porque serán accedidas desde otras subrutinas del libro.

El evento Worksheet_Open

Una vez que las variables ya han sido definidas, utilizaremos el evento Worksheet_Open para asignar un valor inicial a dichas variables. Para eso, dentro del panel izquierdo del Editor de Visual Basic, debes hacer clic en ThisWorkbook y colocar el siguiente código:

Cómo resaltar la celda activa en Excel

La primera instrucción guardará en la variable ColorAnterior el color de relleno de la celda activa y la segunda línea guardará la referencia a la celda activa en la variable CeldaAnterior. El siguiente paso será resaltar la celda activa cuando exista un cambio en la selección de celdas.

Resaltar la celda activa en Excel

Hasta ahora solo hemos declarado e inicializado las variables a utilizar, pero para resaltar una celda debemos modificar su propiedad Interior.Color y dicha línea de código la incluiremos en el evento Workbook_SheetSelectionChange y además insertaremos algunas instrucciones adicionales para el buen funcionamiento de nuestra macro.

Resaltar celda activa en Microsoft Excel

La primera línea es útil para atrapar cualquier error al momento de restablecer el color original de la celda. Generalmente existe un error cuando eliminamos una fila o una columna completa de nuestra hoja, pero con la sentencia On Error Resume Next evitaremos dicho error.

La segunda línea es la que restablece el color de la celda activa anterior con su color original y en la siguiente línea guardaremos el color de relleno de la celda activa para una futura modificación. Una vez que hemos hecho los cambios con los colores, en la cuarta línea haremos el cambio de color de la celda activa con la función RGB. La última línea de código guardará en la variable CeldaAnterior la referencia a la celda activa para futuros cambios.

Evitar guardar el color de relleno

La última línea de código que agregaremos será para el evento Workbook_BeforeSave y será útil para evitar guardar la celda activa con el color con el que la hemos rellenado. Si no pusiéramos esta línea de código, cada vez que guardemos el libro de Excel, la celda que estaba activa en ese momento quedará con el color de relleno de manera permanente y no podremos regresar a su color original. La línea de código es la siguiente:

Resaltar celda activa

De esta manera, antes de guardar el libro, restablecemos el color original de la celda activa y evitamos guardar dicha celda con el color de resalte.

Macro para resaltar la celda activa

A continuación colocaré el código completo que hemos generado hasta ahora y que nos servirá para resaltar la celda activa en Excel. Si lo deseas puedes copiar y pegar este código dentro de la sección ThisWorkbook de tu libro de trabajo.

Private Sub Workbook_Open()
ColorAnterior = ActiveCell.Interior.Color
Set CeldaAnterior = ActiveCell
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
CeldaAnterior.Interior.Color = ColorAnterior
ColorAnterior = ActiveCell.Interior.Color
ActiveCell.Interior.Color = RGB(153, 204, 0)
Set CeldaAnterior = ActiveCell
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
CeldaAnterior.Interior.Color = ColorAnterior
End Sub

Recuerda que además de este código será necesario agregar las variables globales dentro del módulo tal como lo mostré al principio del artículo. Si este código lo estás insertando en tu propio libro de Excel, entonces será necesario que cierres el libro y lo vuelvas a abrir de manera que las variables se inicialicen correctamente o de lo contrario se desplegarán mensajes de error.

Probar la macro que resalta la celda activa

Ahora probaremos nuestro código VBA sobre varios rangos de datos que tienen un formato establecido, de manera que se resalte la celda activa con un color diferente y que además al momento de seleccionar una nueva celda se restablezca el formato anterior de la celda. En la siguiente animación puedes ver el comportamiento de nuestro código:

Macro para resaltar la celda activa en Excel

Con el código que hemos desarrollado en este artículo tendrás la posibilidad de habilitar tus libros para resaltar la celda activa en Excel. Puedes copiar el código que he publicado en la sección anterior o puedes descargar el libro de trabajo para copiar el código directamente del archivo y probar con los datos de ejemplo.

Artículos relacionados
Cómo resaltar la fila de la celda activa en Excel