Formato condicional en Excel VBA

En Excel, todos hemos utilizado el formato condicional para resaltar valores duplicados. El formato condicionalmente mayoritario se usa para obtener valores duplicados. Podemos resaltar valores duplicados de muchas maneras. Podemos resaltar los valores duplicados, los valores específicos del rango y también podemos definir la regla para completar los criterios de formato. A continuación se muestran las funciones variables disponibles en Formato condicional.

Pero, ¿qué sucede si podemos automatizar este proceso de resaltar valores duplicados o de cualquier tipo según nuestros requisitos? Los criterios que podemos definir usando el Formato condicional en Excel también se pueden hacer en VBA. Para aplicar el formato condicional, podemos elegir cualquier celda, rango disponible en la hoja de cálculo de Excel. El formato condicional funciona solo cuando los criterios definidos cumplen el requisito. De lo contrario, no mostrará ningún cambio de color. Con la ayuda del formato condicional en VBA, podemos cambiar el color de cualquier celda o contenido de la celda, eliminar el color de la celda o eliminar el color también. Además de cambiar el color de la celda, podemos cambiar el contenido de la celda a texto en negrita o cursiva . Una vez hecho esto, también podemos deshacer todos los cambios.

¿Cómo usar el formato condicional en Excel VBA?

A continuación se muestran los diferentes ejemplos para usar la función de formato condicional en Excel mediante el uso del código VBA.

Puede descargar esta plantilla de Excel de formato condicional de VBA aquí - Plantilla de Excel de formato condicional de VBA

Formato condicional de VBA - Ejemplo # 1

Tenemos datos de algunos números y texto como se muestra a continuación en la columna A y B. Ahora ya hemos categorizado el color que debemos dar al número y al texto que está en la celda D2. Hemos identificado el color amarillo para el número 1 y el alfabeto A y el color verde para el número 2 y el alfabeto B.

Aunque el formato condicional de VBA se puede implementar en el módulo, escribir el código para el formato condicional en la hoja hará que el código funcione solo en esa hoja. Para esto, en lugar de ir a la opción Módulo, haga clic en la pestaña Insertar para insertar un módulo.

Paso 1: Ahora, desde el primer menú desplegable, seleccione Hoja de trabajo, que será General de forma predeterminada y desde el menú desplegable de selección, seleccionará automáticamente la opción SelectionChange como se muestra a continuación.

Paso 2: Una vez que lo hagamos, se activará automáticamente la subcategoría privada y la celda Objetivo será como Rango.

Código:

 Private Sub Worksheet_SelectionChange (Destino ByVal como rango) End Sub 

Paso 3: Ahora escriba el código primero defina una variable MyRange como Rango . O puede elegir cualquier otro nombre en lugar de MyRange según su elección.

Código:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range End Sub 

Paso 4: Use Establecer y elija el Rango definido como se muestra a continuación.

Código:

 Private Sub Worksheet_SelectionChange (Destino ByVal como rango) Dim MyRange As Range Set MyRange = End Sub 

Paso 5: Después de eso, seleccione la Hoja de trabajo donde queremos aplicar el formato condicional. Aquí nuestra hoja es Sheet1. Podemos poner la secuencia también como 1 en lugar de escribir Sheet1. Y luego seleccione el rango de esas celdas que necesitamos formatear. Aquí nuestro rango es de la celda A1 a B8.

Código:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") End Sub 

Paso 6: Ahora abra un bucle For Each-Next como se muestra a continuación. Y comience con la selección de la variable definida por la celda MyRange .

Código:

 Private Sub Worksheet_SelectionChange (Destino ByVal como rango) Dim MyRange As Range Establecer MyRange = Worksheets ("Sheet1"). Range ("A1: B8") para cada celda en MyRange Next End Sub 

Paso 7: Ahora en eso, nuevamente abra un bucle If-Else.

Código:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") Para cada celda en MyRange If End If Next End Sub 

Esta es la región donde asignaríamos los colores a todos los números y alfabetos disponibles en nuestro rango.

Paso 8: escriba el código, si el valor de la celda es 1, entonces, el color del interior de la celda del rango seleccionado que va de A1 a B8 será verde. Y para el verde, tenemos un código de color asignado como 6.

Código:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") Para cada celda en MyRange If Cell.Value Like "1" Then Cell.Interior.ColorIndex = 6 End If Next End Sub 

Paso 9: Ahora para el valor de celda número 2. De lo contrario, si el valor de celda de cualquier celda del rango seleccionado es 2, el color interior de esa celda será Amarillo. Y para el amarillo tenemos un código de color asignado como 4.

Código:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") Para cada celda en MyRange If Cell.Value Like "1" Then Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Like "2" Then Cell.Interior.ColorIndex = 4 End If Next End Sub 

Para cada color, tenemos diferentes códigos de color asignados, que comienza entre 1 y 56. Mientras que el código de número 1 se asigna al color negro y el número 56 al color gris oscuro. En el medio, tenemos otros tonos de color diferentes que podemos encontrar en Documentos de Microsoft.

Paso 10: si alguno de los anteriores

si la condición es FALSA, tendríamos otra Else si la condición donde el valor de la celda es A, entonces el color interior de la celda será Amarillo. Y para el amarillo nuevamente asignaremos el código como 6.

Código:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") Para cada celda en MyRange If Cell.Value Like "1" Then Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Like "2" Then Cell.Interior.ColorIndex = 4 ElseIf Cell.Value Like "A" Then Cell.Interior.ColorIndex = 6 End If Next End Sub 

Paso 11: haga lo mismo para el valor de celda B también, con el código de color 4 como verde.

Código:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") Para cada celda en MyRange If Cell.Value Like "1" Then Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Like "2" Entonces Cell.Interior.ColorIndex = 4 ElseIf Cell.Value Like "A" Then Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Like "B" Entonces Cell.Interior.ColorIndex = 4 End If Next End Sub 

Paso 12: Si alguna de las condiciones no es VERDADERA, para Else preferiremos seleccionar el código de color como Ninguno .

Código:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") Para cada celda en MyRange If Cell.Value Like "1" Then Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Like "2" Entonces Cell.Interior.ColorIndex = 4 ElseIf Cell.Value Like "A" Then Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Like "B" Entonces Cell.Interior.ColorIndex = 4 Else Cell.Ineterios.ColorIndex = xlNone End If Next End Sub 

Paso 13: como el código es grande, para compilar cada paso del código, presione la tecla funcional F8. Si no se encuentra ningún error, haga clic en el botón de reproducción para ejecutar todo el código de una vez. Veremos, según la regla de formato condicional definida en el código VBA, el color de las celdas se ha cambiado a los códigos de color seleccionados como se muestra a continuación.

Paso 14: Este formato ahora está arreglado. Si queremos ver los cambios en el color, para la prueba, cambiemos el valor de cualquier celda, considere A1 de 1 a 2. Veremos que el color de la celda A1 cambia a Verde.

Esto se debe a que hemos declarado que en el rango A1 a B8, cualquier celda que contenga los números 1 y 2 y los alfabetos A y B, se formateará en color amarillo y verde como se muestra en la celda D2 a E3.

Pros y contras

  • Da salida instantánea si tenemos grandes datos. Mientras que si aplicamos lo mismo desde la opción del menú de Excel, tomará tiempo borrar el formato para el conjunto de datos grandes.
  • También podemos realizar todos los tipos de funciones que están disponibles en Excel para el formato condicional en VBA.
  • No se recomienda aplicar el formato condicional de VBA para un pequeño conjunto de datos.

Cosas para recordar

  • Hay muchas otras funciones además de resaltar duplicados y celdas del mismo valor. Podemos cambiar el formato de la celda de cualquier forma, como negrita, texto en cursiva, cambiando el color de fuente, cambiando el color de fondo, resaltando los valores entre un rango específico.
  • Una vez que se aplica el formato condicional, podemos cambiar la regla, de hecho, también podemos eliminar las condiciones de formato. Para que nuestros datos vuelvan a la normalidad.
  • Podemos aplicar más de una condición en una macro.

Artículos recomendados

Esta es una guía para el formato condicional de VBA. Aquí discutimos cómo usar la función de formato condicional VBA de Excel junto con ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:

  1. Función de copiar y pegar en VBA
  2. Función de subcadena de Excel
  3. VBA Subíndice fuera de rango
  4. Fórmula ISNUMBER de Excel
  5. Formato condicional para fechas en Excel

Categoría: