Color de celda en VBA Excel. Las propiedades .Interior.Color y .Interior.ColorIndex. Modelo de color RGB. Paleta estándar. Limpiando el fondo de la celda.
La propiedad .Interior.Color de un objeto Range
A partir de Excel 2007, la forma principal de llenar un rango o celda individual con color (pintar, agregar, cambiar el fondo) es usar la propiedad .Interior.Color del objeto Rango asignándole un valor de color como un número decimal de 0 a 16777215 (16777216 colores en total).
Llenar una celda con color en VBA Excel
Ejemplo 1
Sub ColorTest1() Range("A1").Interior.Color = 31569 Range("A4:D8").Interior.Color = 4569325 Range("C12:D17").Cells(4).Interior.Color = 568569 Cells(3, 6).Interior.Color = 12659 End Sub
Coloque el código de muestra en el módulo de su programa y presione el botón en la barra de herramientas «Run Sub» o en el teclado «F5», el cursor debe estar dentro del programa en ejecución. En la hoja de cálculo activa de Excel, las celdas y el rango seleccionados en el código aparecerán en los colores apropiados.
Si establece la propiedad .Interior.Color en un valor negativo entre -16777215 y -1, el color corresponderá a un valor igual a la suma del valor máximo de la paleta (16777215) y el valor negativo asignado. Por ejemplo, el relleno de las tres celdas después de ejecutar el siguiente código será el mismo:
Sub ColorTest11() Cells(1, 1).Interior.Color = -12207890 Cells(2, 1).Interior.Color = 16777215 + (-12207890) Cells(3, 1).Interior.Color = 4569325 End Sub
Probado en Excel 2016.
Mostrar mensajes sobre valores de color numéricos
Es imposible recordar los valores numéricos de los colores, por lo que a menudo surge la pregunta de cómo averiguar el valor numérico del fondo de una celda. El siguiente código VBA Excel muestra mensajes sobre los valores numéricos de los colores previamente asignados.
Ejemplo 2
Sub ColorTest2() MsgBox Range("A1").Interior.Color MsgBox Range("A4:D8").Interior.Color MsgBox Range("C12:D17").Cells(4).Interior.Color MsgBox Cells(3, 6).Interior.Color End Sub
En lugar de imprimir mensajes MsgBox, puede asignar valores de color numéricos a las variables declarándolas como Long.
Usar constantes predefinidas
VBA Excel tiene constantes predefinidas para los colores de relleno de celdas más utilizados:
Constante predefinida | Nombre del color |
---|---|
vbBlack | Negro |
vbBlue | Azul |
vbCyan | Turquesa |
vbGreen | Verde |
vbMagenta | Púrpura |
vbRed | Rojo |
vbWhite | Blanco |
vbYellow | Amarillo |
xlNone | Sin relleno |
El color se asigna a una celda mediante una constante predefinida en VBA Excel de la misma manera que con un valor numérico:
Ejemplo 3
Range("A1").Interior.Color = vbGreen
Modelo de color RGB
El sistema de color RGB es una combinación de tres colores primarios de intensidad variable: rojo, verde y azul. Pueden tomar valores de 0 a 255. Si todos los valores son 0, es negro, si todos los valores son 255, es blanco.
Puede seleccionar un color y conocer sus valores RGB usando la paleta de Excel:
Antes de poder asignar un color a una celda o rango usando valores RGB, se deben convertir a un número decimal que represente el color. Para ello existe una función de VBA Excel llamada RGB.
Ejemplo 4
Range("A1").Interior.Color = RGB(100, 150, 200)
Limpiar una celda (rango) del llenado
Para borrar el llenado de una celda (rango), use la constante xlNone
:
Range("A1").Interior.Color = xlNone
La propiedad .Interior.ColorIndex del objeto Range
Antes de la llegada de Excel 2007, sólo existía una paleta limitada para rellenar celdas con fondos, que constaba de 56 colores, que se ha conservado hasta el día de hoy. A cada color de esta paleta se le asigna un índice del 1 al 56. Puede asignar un color a una celda por índice o mostrar un mensaje al respecto usando la propiedad .Interior.ColorIndex:
Ejemplo 5
Range("A1").Interior.ColorIndex = 8 MsgBox Range("A1").Interior.ColorIndex
Ejecute una macro simple para ver una paleta limitada para llenar celdas con color:
Ejemplo 6
Sub ColorIndex() Dim i As Byte For i = 1 To 56 Cells(i, 1).Interior.ColorIndex = i Next End Sub
Los números de fila de la hoja activa del 1 al 56 corresponderán al índice de color, y la celda de la primera columna se rellenará con un fondo correspondiente al índice.