Resaltar Celda Activa Excel
Resaltar Celda Activa Excel
Resaltar Celda Activa Excel
Hace algunas semanas escrib un artculo sobre cmo resaltar la fila de la celda activa y
hoy he decidido hacer un ejemplo similar, pero solo para resaltar la celda activa en
Excel. Tambin implementaremos el cdigo VBA necesario para mantener los colores
originales de las celdas an despus 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 funcin RGB nos devolver un valor entero que representar la combinacin de
colores rojo, verde y azul indicados como argumentos de la funcin. Aunque esta es la
nica instruccin 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 ayudarn a tener una memoria que
nos permita recordar la ltima celda activa as como su color de relleno antes de ser
resaltada por nuestro cdigo. Esto ser de gran importancia para restablecer el color
original de la celda o de lo contrario terminaramos con todas las celdas del mismo color
al ir activando cada una de ellas.
Comenzaremos por abrir el Editor de Visual Basic (Programador > Cdigo > Visual
Basic) y haremos clic derecho en VBAProject para elegir la opcin Insertar > Mdulo.
Una vez creado el mdulo de cdigo insertar dos lneas como las siguientes:
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 sern 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 cdigo:
La primera instruccin guardar en la variable ColorAnterior el color de relleno de la
celda activa y la segunda lnea 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 seleccin 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 lnea de
cdigo la incluiremos en el evento Workbook_SheetSelectionChange y adems
insertaremos algunas instrucciones adicionales para el buen funcionamiento de nuestra
macro.
La primera lnea 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 lnea es la que restablece el color de la celda activa anterior con su color
original y en la siguiente lnea guardaremos el color de relleno de la celda activa para
una futura modificacin. Una vez que hemos hecho los cambios con los colores, en la
cuarta lnea haremos el cambio de color de la celda activa con la funcin RGB. La
ltima lnea de cdigo guardar en la variable CeldaAnterior la referencia a la celda
activa para futuros cambios.
Evitar guardar el color de relleno
La ltima lnea de cdigo 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 pusiramos esta lnea de cdigo, 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 lnea de cdigo es la
siguiente:
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 continuacin colocar el cdigo 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
cdigo dentro de la seccin ThisWorkbook de tu libro de trabajo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 adems de este cdigo ser necesario agregar las variables globales dentro
del mdulo tal como lo mostr al principio del artculo. Si este cdigo lo ests
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 desplegarn mensajes de error.
Probar la macro que resalta la celda activa
Ahora probaremos nuestro cdigo 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 adems al momento de seleccionar una nueva celda se restablezca el formato
anterior de la celda. En la siguiente animacin puedes ver el comportamiento de nuestro
cdigo:
Con el cdigo que hemos desarrollado en este artculo tendrs la posibilidad de habilitar
tus libros para resaltar la celda activa en Excel. Puedes copiar el cdigo que he
publicado en la seccin anterior o puedes descargar el libro de trabajo para copiar el
cdigo directamente del archivo y probar con los datos de ejemplo.