30 Macros Útiles y Sencillas: Resaltar Celda Activa Parte 3

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.

Siéntase libre de opinar

Una opinión
  1. Cristhian Castillo dice:

    Hola, me podrian ayudar, tengo una planilla llena con formulas los datos de ingreso te llevan a los siguientes calculos y estos a los siguientes calculos, pero ahora lo que debo es que se itere de forma automatica.

    Me podrian guiar, mi mail es ingambiental.ccastillo@gmail.com

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

Información legal aplicable para Colombia.