Saltar al contenido
Nuestra aplicación "Vuelos baratos" en AppGallery >>

VBA Excel. Color de celda (relleno, fondo)

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.


Contenido de la sección VBA Excel en ruso, puedes utilizar el traductor de Google.