Pintemos una pintura de Monalisa y dejemos atrás a Picasso usando VBA. Listo, prepárate …
¡Esperar! ¡Esperar! Calma. ¿Solo vamos a usar VBA para hacer formato condicional y es más fácil que pintar eso? pájaro en forma.
La sintaxis genérica del formato condicional de VBA
Si condición que Range (rango) .Interior.ColorIndex = 1-56
Realice su verificación de condición en la condición y luego formatee su rango usando la propiedad .iteriour.colorindex del objeto Range. El índice de color tiene 56 colores. Ve a jugar Holi con ellos y explora qué número tiene qué color.
Ahora entendamos con un ejemplo
Ejemplo: código VBA para formatear celdas condicionalmente
Entonces, este es el escenario, tenemos una lista de personas al azar con su edad y grupo de edad.
Qué fácil sería si pudiera decirle al grupo de edad de una persona con solo mirar sus nombres.
Ahora para hacer esto, quiero el formato VBA Nombre ROJO si es un adulto, AMARILLO si es un adolescente y VERDE si es un NIÑO y nada si la celda está en blanco.
Sub FormatUsingVBA () Dim rng As Range Dim lastRow As Long lastRow = Cells (Rows.Count, 3) .End (xlUp) .Row Set rng = Range ("C2: C" & lastRow) Para cada celda En rng If celda. Valor2 = "Adulto" Luego Rango (celda.Address) .Offset (0, -2) .Interior.ColorIndex = 3 ElseIf cell.Value2 = "KID" Luego Rango (celda.Address) .Offset (0, -2). Interior.ColorIndex = 4 ElseIf cell.Value2 = "Adolescente" Entonces Rango (celda.Address) .Offset (0, -2) .Interior.ColorIndex = 6 Else Range (celda.Address) .Offset (0, -2). Interior.ColorIndex = 0 End If Next cell End Sub
Para ejecutar este código directamente desde la hoja, dibujé un botón en la misma hoja y le asigné esta macro. Ahora, cada vez que haga clic en el botón "Formato", su código se ejecutará y actualizará las celdas de nombre con color según su grupo de edad. ¿Cómo? Vamos a averiguar.
Explicación del código:
Dim rng As RangeDim lastRow As Long Estas dos líneas son declaraciones de variables. rng para Range que contiene el grupo de edad y lastRow para obtener el último número de fila no en blanco.
lastRow = Cells (Rows.Count, 3) .End (xlUp) .Row Esta línea devuelve el último número de fila en la variable lastRow.
Set rng = Range ("C2: C" & lastRow) Esta línea establece el rango desde C2 hasta la última fila. Hace que su código sea dinámico. Agrega nuevas filas a sus datos y detectará y almacenará en un nuevo rango en la variable rng.
Para cada celda In rng If cell.Value2 = "Adult" Then Range (cell.Address) .Offset (0, -2) .Interior.ColorIndex = 3 ElseIf cell.Value2 = "KID" Then Range (celda.Address). Offset (0, -2) .Interior.ColorIndex = 4 ElseIf cell.Value2 = "Teenager" Then Range (cell.Address) .Offset (0, -2) .Interior.ColorIndex = 6 Else Range (cell.Address). Offset (0, -2) .Interior.ColorIndex = 0 End If Next celda
Este es el segmento principal.
Para cada celda en rng
La primera línea ejecuta el ciclo a todas las celdas en su rango. Si cell.Value2 = "Adult" Entonces
La siguiente línea es una verificación de condición. Comprueba si el valor actual de la celda es Adulto o no.
Si es así, la siguiente línea se ejecuta, de lo contrario, salta a la siguiente instrucción if.Range (celda.Address) .Offset (0, -2) .Interior.ColorIndex = 3
Ahora, si la condición SI devuelve VERDADERO, esta línea establece el color de la celda en ColorIndex 3 que es para ROJO.
De manera similar, las siguientes instrucciones IF se ejecutan y toman medidas según lo especificado.
Entonces, sí, puede formatear rangos condicionalmente usando VBA. El método interior del objeto Range controla muchas otras propiedades de formato. Deberías jugar con ellos, no te hará ningún daño pero definitivamente aprenderás. Y si te enfrentas a alguna dificultad de lo que estoy aquí. Haga sus preguntas en la sección de comentarios.
Descargar archivo
Formato condicional usando VBA en Microsoft ExcelArticulos populares:
50 accesos directos de Excel para aumentar su productividad
Cómo utilizar la función BUSCARV en Excel
Cómo usar la función CONTAR.SI en Excel
Cómo utilizar la función SUMIF en Excel