Uso de colores en Excel con macros

En este ejemplo te comparto una macro para hacer una tabla con los 56 colores que se manejan por defecto en la paleta de colores de Office.

Aunque Office sólo nos muestre 56, realmente tenemos un límite de 16 millones de colores a usar.

Paleta de colores de Office

Figura 1. Paleta de colores de Office.

Cómo obtener más colores

Cuando asignamos un color al fondo de una celda o a la fuente nos encontramos con un botón que dice Más colores, el cual nos permitirá obtener más de los 56 de la paleta. Incluso si tenemos un código RGB de un color, también lo podemos obtener.

Obtener hasta 16 millones de colores en Excel

Figura 2. Obtener más de 56 colores.

Cómo uso colores con macros

Para poder asignar un color a una celda o auna fuente, tenemos la propiedad ColorIndex, la cual podrá recibir colores del 1 al 56.

Si queremos darle un color rojo a la celda activa usamos:

ActiveCell.Interior.ColorIndex = 3

Si queremos darle un color azul al fuente de la celda activa usamos:

ActiveCell.Font.ColorIndex = 5

Aunque también podemos utilizar la propiedad Color de la siguiente manera.

ActiveCell.Interior.Color = vbRed

Para la propiedad Color tenemos 8 constantes de color a utilizar sin necesidad de saber el índice del color.

Colores en Excel

Figura 3. Constantes de color en vba: vbBlack, vbWhite, vbRed, vbGreen, vbBlue, vbYellow, vbMagenta y vbCyan.

La siguiente tabla contiene los 56 colores de la tabla predeterminada de Office, así como su índice.

Tabla de 56 colores en Excel

Figura 4. Tabla de colores en Excel con macros.

Código vba para generar la tabla de colores

El siguiente código inserta una nueva hoja en el libro activo y arma la tabla de colores.

Sub TablaDeColores()
'
ActiveWorkbook.Sheets.Add
'
Range("A1").Value = "INTERIOR"
Range("B1").Value = "FONT"
Range("C1").Value = "COLOR"
Range("D1").Value = "VBA COLOR"
'
For i = 1 To 56
    Cells(i + 1, 1).Interior.ColorIndex = i
    Cells(i + 1, 1).Value = "[Color " & i & "]"
    Cells(i + 1, 2).Value = "[Color " & i & "]"
    Cells(i + 1, 2).Font.ColorIndex = i
    Cells(i + 1, 3).Value = "[Color " & i & "]"
Next i
'
Range("D2").Value = "vbBlack"
Range("D2").Interior.Color = vbBlack
Range("D3").Value = "vbWhite"
Range("D3").Interior.Color = vbWhite
Range("D4").Value = "vbRed"
Range("D4").Interior.Color = vbRed
Range("D5").Value = "vbGreen"
Range("D5").Interior.Color = vbGreen
Range("D6").Value = "vbBlue"
Range("D6").Interior.Color = vbBlue
Range("D7").Value = "vbYellow"
Range("D7").Interior.Color = vbYellow
Range("D8").Value = "vbMagenta"
Range("D8").Interior.Color = vbMagenta
Range("D9").Value = "vbCyan"
Range("D9").Interior.Color = vbCyan
'
End Sub

You may also like...