Está en la página 1de 6

Cómo resaltar la fila de la

celda activa en Excel


Cuando tienes una tabla en Excel con muchas columnas es fácil perder
de vista la fila a la que pertenecen los datos. Hoy aprenderemos cómo
resaltar la fila de la celda activa de manera que podamos distinguir
fácilmente todos los valores de una fila.

Nuestro objetivo será crear un apoyo visual para identificar fácilmente los
datos que pertenecen a la misma fila de la celda activa. Al momento de
seleccionar una nueva celda, la fila anterior quedará sin resaltar y la
nueva fila será resaltada. Observa la siguiente animación donde queda
claro nuestro objetivo:

El código VBA que desarrollaremos hará que todas las hojas de nuestro
libro tengan este comportamiento sin necesidad de copiarlo en cada una
de ellas. Así que sin mayor preámbulo, comencemos con el desarrollo de
esta funcionalidad.

Crear una variable VBA global


El primer paso será crear una variable global en VBA donde
almacenaremos el valor de la celda activa “actual” y el de la celda activa
“anterior”. Esto es necesario ya que al movernos a una nueva fila
debemos quitar cualquier formato de la fila previamente resaltada y por lo
tanto necesito almacenar una referencia a dicha fila. Para crear esta
variable debes abrir el Editor de Visual Basic y agregar un módulo de
código haciendo clic derecho sobre el nombre del proyecto > Insertar >
Módulo:

Una vez creado este módulo debemos colocar la siguiente línea de


código:

1 Public celdaActiva(1) As Range

El hecho de que la variable sea Public nos permite tener acceso a ella


desde cualquier otro módulo de código. Esta variable es un arreglo en
VBA que no es más que una colección  de “casillas” donde podemos
almacenar valores. En este caso la variable celdaActiva tiene dos casillas
del tipo Range las cuales podemos acceder con los índices 0 y 1.
Inicializar la variable celdaActiva
En este punto la variable celdaActiva creada en el paso anterior aún está
vacía, así que haremos uso del evento Workbook_Open para indicarle
cuál es la celda activa al momento de abrir nuestro libro de Excel. Inserta
el siguiente código dentro del evento Workbook_Open del
objeto ThisWorkbook:

1 Private Sub Workbook_Open()


2     Set celdaActiva(1) = ActiveCell
3     ActiveCell.EntireRow.Interior.Color = RGB(255, 145, 145)
End Sub
4

Al abrir nuestro libro se ejecutará el código del evento WorkbookOpen y


por lo tanto el elemento 1 del arregloceldaActiva tendrá una referencia a
la celda activa de nuestro libro. La segunda instrucción que se ejecuta
cambiará el valor de la
propiedad  ActiveCell.EntireRow.Interior.Color para establecer un color
de fondo para toda la fila de la celda activa. En este caso utilizo la
función RGB para elegir un color de fondo con una combinación
específica de colores rojo, verde y azul. Si quieres saber un poco más
sobre los colores en Excel y la función RGB, consulta el artículo Evaluar
el color de fondo de una celda.

Además de inicializar la variable celdaActiva al momento de abrir nuestro


libro de Excel, lo haremos también al momento de activar una nueva hoja
lo que significa que debemos hacer uso del
eventoWorkbook_SheetActivate que también se encuentra dentro del
objeto ThisWorkbook. Después de haber insertado el mismo código para
ambos eventos, deberás tener una vista en el Editor de Visual Basic
como la siguiente:

Resaltar la fila de la celda activa


Ahora solo nos resta resaltar la fila de la celda activa en el momento en
que seleccionamos una nueva celda. Ese instante está representado en
Excel por el evento Workbook_SheetSelectionChange donde
colocaremos el siguiente código:

1 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)


2     Set celdaActiva(0) = celdaActiva(1)
3     Set celdaActiva(1) = Target
4  
5     On Error Resume Next
6     celdaActiva(0).EntireRow.Interior.Color = xlNone
    Target.EntireRow.Interior.Color = RGB(255, 145, 145)
7 End Sub
8

Ya que este evento se “dispara” en el momento en que seleccionamos


una nueva celda, la primera instrucción almacena el valor de la celda
activa anterior dentro de celdaActiva(0) e inmediatamente después
guardamos la referencia a la nueva celda activa dentro
de celdaActiva(1) y que en ese instante está referenciada por la
variable Target. Las últimas dos instrucciones cambian el color de fondo
de las filas. Primero igualamos el color de celda activa anterior
a xlNone que significa que removeremos cualquier color de fondo y
enseguida establecemos un color de fondo con la función RGB para la
fila de la nueva celda activa. Al finalizar todos estos pasos tendremos un
código como el siguiente:
Eso será todo. Al haber seguido estos pasos tendrás un libro de Excel
que resaltará la fila de la celda activa en todas las hojas.

Observaciones sobre el método utilizado


El método utilizado para resaltar la fila de la celda activa en
Excel mostrado en este artículo modifica el valor de la
propiedad Interior.Color de cada una de las celdas de la fila. Por esta
razón, si tus celdas tienen aplicado algún color, éste será removido al
momento de seleccionar una celda de la misma fila.

Es importante recordar que los colores que serán removidos serán los
aplicados en el relleno de las celdas a través de las herramientas de
formato. Los colores aplicados por formato condicional quedarán intactos
ya que dichos colores se almacenan en una propiedad diferente. De
hecho, si tus datos tienen reglas de formato condicional, dichos colores
estarán sobre puestos al color aplicado por el código de este ejemplo.

Resaltar fila y columna de la celda activa


Una variante interesante del ejemplo mostrado anteriormente es agregar
algunas líneas de código para resaltar la columna de la celda activa y de
esa manera ubicarla tanto horizontal como verticalmente. El código a
utilizar será el siguiente:
1
2
Private Sub Workbook_Open()
3     Set celdaActiva(1) = ActiveCell
4     ActiveCell.EntireRow.Interior.Color = RGB(255, 145, 145)
5     ActiveCell.EntireColumn.Interior.Color = RGB(255, 145, 145)
6 End Sub
7  
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
8     Set celdaActiva(1) = ActiveCell
9     ActiveCell.EntireRow.Interior.Color = RGB(255, 145, 145)
10     ActiveCell.EntireColumn.Interior.Color = RGB(255, 145, 145)
11 End Sub
12  
13 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Set celdaActiva(0) = celdaActiva(1)
14     Set celdaActiva(1) = Target
15  
16     On Error Resume Next
17     celdaActiva(0).EntireRow.Interior.Color = xlNone
18     celdaActiva(0).EntireColumn.Interior.Color = xlNone
    Target.EntireRow.Interior.Color = RGB(255, 145, 145)
19
    Target.EntireColumn.Interior.Color = RGB(255, 145, 145)
20 End Sub
21
22

Observa que lo único que he hecho es agregar las líneas de código que
hacen referencia a la propiedadEntireColumn.Interior.Color que resaltan
la columna de la celda activa. Por supuesto que esta versión de código
también necesitará de una variable global declarada en un Módulo de
manera similar que en el primer ejemplo. El resultado de utilizar este
código es el siguiente:

También podría gustarte