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:

Cómo resaltar la fila de la celda activa en Excel

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:

Resaltar fila activa en Microsoft Excel

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

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.

Cómo resaltar la celda activa en Excel

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:

Private Sub Workbook_Open()
    Set celdaActiva(1) = ActiveCell
    ActiveCell.EntireRow.Interior.Color = RGB(255, 145, 145)
End Sub

Al abrir nuestro libro se ejecutará el código del evento WorkbookOpen y por lo tanto el elemento 1 del arreglo celdaActiva 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 evento Workbook_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 en Excel

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:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Set celdaActiva(0) = celdaActiva(1)
    Set celdaActiva(1) = Target

    On Error Resume Next
    celdaActiva(0).EntireRow.Interior.Color = xlNone
    Target.EntireRow.Interior.Color = RGB(255, 145, 145)
End Sub

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:

Resaltar la línea activa en Excel

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:

Private Sub Workbook_Open()
    Set celdaActiva(1) = ActiveCell
    ActiveCell.EntireRow.Interior.Color = RGB(255, 145, 145)
    ActiveCell.EntireColumn.Interior.Color = RGB(255, 145, 145)
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Set celdaActiva(1) = ActiveCell
    ActiveCell.EntireRow.Interior.Color = RGB(255, 145, 145)
    ActiveCell.EntireColumn.Interior.Color = RGB(255, 145, 145)
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Set celdaActiva(0) = celdaActiva(1)
    Set celdaActiva(1) = Target

    On Error Resume Next
    celdaActiva(0).EntireRow.Interior.Color = xlNone
    celdaActiva(0).EntireColumn.Interior.Color = xlNone
    Target.EntireRow.Interior.Color = RGB(255, 145, 145)
    Target.EntireColumn.Interior.Color = RGB(255, 145, 145)
End Sub

Observa que lo único que he hecho es agregar las líneas de código que hacen referencia a la propiedad EntireColumn.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:

Macro para resaltar columna y fila activa en Excel

Descarga el archivo comprimido donde encontrarás dos libros de Excel. El primero contiene el ejemplo que resalta la fila de la celda activa y el segundo el que resalta tanto la fila como la columna.