Resaltar Celda Activa en Excel

Por

Vamos a empezar esta serie de artículos con el tema de Macros donde veremos la aplicación de 30 de ellas las cuales nos pueden servir para contar con archivos de Excel más adaptado a nuestras necesidades.

En esta primera entrega vamos a ver cómo podemos resaltar la celda en la que nos estemos ubicados; para ello la idea es colorear toda la fila con lo cual tendremos una mejor vista de una base de datos a la hora de recorrer la hoja Excel. Tenemos la siguiente base de datos:

Observemos que por la gran cantidad de datos se hace un poco complicado saber cuáles son los valores que están en las demás columnas a la derecha de la celda activa D10. Es en este tipo de casos donde nos es útil resaltar toda la fila de la celda que tenemos activa.

Ingresamos al Editor de Visual Basic y para ello desde la hoja sobre la que queremos el resultado utilizaremos la combinación de teclas Alt + F11:

En este ejemplo, damos doble clic en Hoja1 (BD):

Vemos entonces que en la parte derecha del Editor de Visual Basic esta en modo de edición donde ya podemos digitar los códigos que necesitemos programar y de esta manera, los códigos que ingresemos serán aplicados directamente sobre la Hoja1 llamada BD.

Bien, ahora que ya estamos más familiarizados con algunos conceptos referentes a la programación de Excel (Visual Basic, Objetos, Ventana de Proyectos, etc.) vamos a realizar la macro para colorear la ceda activa.

En el espacio de edición de Código pegamos el siguiente código:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next

Target.EntireRow.Interior.ColorIndex = 42

End Sub

La primera y última línea es marcan el inicio y el final de la macro respectivamente. La primera línea es el código con el que debemos iniciar cualquier macro que necesitemos se ejecute al momento de presentarse un cambio en la hoja Excel; un cambio es por ejemplo ingresar un valor en una celda, eliminar una fila, o seleccionar una celda. Así que al momento de seleccionar una celda, Excel activa esta macro y ejecuta los códigos que tengamos dentro de esta hasta la última línea End Sub la cual marca el final de la macro.

La segunda línea también la vamos a tener siempre pues lo que hace es que ante un error en la programación de la macro, evite detenerla abruptamente y que en lugar de un mensaje de error que muestra Excel a nivel técnico, simplemente termine la ejecución de la macro.

La tercera línea que nos queda, es con la cual estamos asignando el color a toda la fila de la celda activa. El valor 42 que esta al final de esta línea es un código numérico de un color de Excel. Veamos el resultado:

La celda activa es E9, por tanto la macro colorea toda la fila 9. Ahora seleccionemos la celda H15 y veamos el resultado:

Vemos que ahora nos colorea toda la fila 15 pero, nos dejó coloreada también la fila en la que estábamos ubicados anteriormente lo cual no es necesario ya que solo necesitamos que resaltar la celda activa; asi que vamos nuevamente al Editor de Visual Basic para ajustar la macro que tenemos donde debemos colocar el siguiente código:

Cells.Interior.ColorIndex = 0

Este código lo pegamos antes de la línea que colorea la fila de la celda activa:

Lo que hace este código es que al momento de seleccionar otra celda de la hoja, toma todas las celdas de la hoja y las deja sin color, esto ocurre al dar el valor 0 y luego de esto, pasa a ejecutar la siguiente línea para aplicarse el color a toda la fila de la celda seleccionada. Vamos a Excel y veamos el resultado al seleccionar la celda F11:

Ahora al seleccionar la celda D5:

Y al seleccionar varias filas:

Con esto queda lista la Macro. En caso de que deseen cambiar el color con el que estamos resaltando toda la fila de la celda activa, solo debemos cambiar el valor 42 en el código

Target.EntireRow.Interior.ColorIndex = 42

Descargar archivo de trabajo.

Continuando con la macro para resaltar la celda activa, vimos en el artículo anterior como aplicar un color a toda la fila; ahora vamos a adicionar otra línea de código para que además de que nos coloree toda la fila, también nos coloree la columna lo cual nos da una ayuda visual más efectiva para ubicar datos en la hoja.

Ingresamos al Editor de Visual Basic y para ello desde la hoja sobre la que queremos el resultado utilizaremos la combinación de teclas Alt + F11:

Nos ubicamos en la ventana del Explorador de Proyectos que tenemos en el panel izquierdo de la ventana del Editor de Visual basic y damos doble clic a la Hoja 1 (BD) que es donde queremos aplicar la macro y pegamos el siguiente código en el espacio de edición de código:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next

Cells.Interior.ColorIndex = 0

Target.EntireRow.Interior.ColorIndex = 42

Target.EntireColumn.Interior.ColorIndex = 42

End Sub

Observemos que a diferencia del artículo anterior, tenemos el mismo código solo con una diferencia y es la penúltima línea donde estamos asignando el color 42 a toda la columna de la celda activa. Vemos el resultado:

Y al seleccionar otra celda:

Recordemos que si desean cambiar el color de la celda con el que estamos resaltando la fila y la columna de la celda activa, solo debemos cambiar el valor 42 en los códigos.

Target.EntireRow.Interior.ColorIndex = 42

Target.EntireColumn.Interior.ColorIndex = 42

Descargar archivo de trabajo

Hasta este punto ya sabemos cómo resaltar la celda activa aplicando color a toda la fila y toda la columna de dicha celda, sin embargo lo más probable es que en nuestros trabajos solo sea necesario aplicar el color a un rango donde tenemos la información, es decir no a toda la columna y fila. Vamos a ver ahora como resaltar la celda activa pero aplicando color a un rango especifico. Tenemos la siguiente base de datos:

Observemos que el rango donde están los datos en C11:K30, es decir que si seleccionamos una celda que este por fuera de este rango no debe aplicarse color ninguno; así que solo vamos a resaltar la fila de la celda que seleccionemos del rango C11:K30

Ingresamos al Editor de Visual Basic y para ello desde la hoja sobre la que queremos el resultado utilizaremos la combinación de teclas Alt + F1:

Nos ubicamos en la ventana del Explorador de Proyectos que tenemos en el panel izquierdo de la ventana del Editor de Visual basic y damos doble clic a la Hoja 1 (BD) que es donde queremos aplicar la macro y pegamos el siguiente código en el espacio de edición de código:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next

R = ActiveCell.Row

C = ActiveCell.Column

Range("C11:K30").Interior.ColorIndex = 0

If R < 11 Or R > 30 Or C < 3 Or C > 11 Then

Exit Sub

Else

Range("C" & R & ":K" & R).Interior.ColorIndex = 42

End If

End Sub

Este código es un poco mas extenso que los anteriores, sin embargo también es sencillo. Primero se utilizan las variables R y C para almacenar en ellas temporalmente la fila y la columna de la celda activa respectivamente.

R = ActiveCell.Row

C = ActiveCell.Column

Luego, antes de aplicar un color, es necesario dejar sin color el rango C11:K30

Range("C11:K30").Interior.ColorIndex = 0

Luego se aplica un condicional If donde se valida si el valor de las variables R y C, es decir, si la fila y la columna de la celda activa no hacen parte del rango que deseamos colorear y si ese es el caso, es decir, si no seleccionamos una celda del rango de datos entonces no hay que hacer nada:

If R < 11 Or R > 30 Or C < 3 Or C > 11 Then

Exit Sub

Observemos que la condición pregunta si la variable R es menor a 11 o mayor a 30 y ésta validación es de esta manera porque el rango de datos esta entre la fila 11 y la fila 30. Lo mismo sucede en la validación de las columnas donde se pregunta si la variable C (que tiene el número de la columna de la celda activa), es menor a 3 o mayor a 11 que corresponde a las columnas C y K del rango de datos

Si esta validación no es VERDADERO, es decir, si seleccionamos una celda del rango que necesitamos colorear, entonces a la fila R de la celda activa desde la columna C hasta la columna K aplicamos el color 42:

Else

Range("C" & R & ":K" & R).Interior.ColorIndex = 42

 

Vemos el resultado:

Y al seleccionar otra celda:

Recordemos que si desean cambiar el color de la celda con el que estamos resaltando la fila, solo debemos cambiar el valor 42 en el código.

Target.EntireRow.Interior.ColorIndex = 42

Descargar archivo de trabajo.

Contenido relacionado:
Gerencie.com en su correo.

Suscríbase y nosotros colocaremos en su bandeja de entrada la mejor información que generamos diariamente.


Déjenos su opinión

3 Opiniones
  1. nidal Dice:

    amgio el color de fila no se quita
    el color de la fila es fijo

    Responder
  2. zoad Dice:

    buenas tardes, quisiera saber si se podría hacer que una celda de excel tome el color que se seleccione de la paleta de colores y lo tome cualquier celda al hacer clic, gracias.

    Responder
  3. aa Dice:

    gracias

    Responder
En Gerencie.com está permitido opinar, criticar, discutir, controvertir, disentir, etc., pero debe hacerlo con respeto, sin insultar y sin ofender a otros.

Información legal aplicable para Colombia.

¿Preocupado por su pensión? Manténgase Informado.