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.
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.
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.
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.
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