Excel usa una paleta de colores que consta de 56 colores. Puede ver estos colores si muestra la pestaña Patrones del cuadro de diálogo Formato de celdas.

Al crear macros en VBA, es posible que desee hacer referencia a estos colores, por su nombre, utilizando constantes.

Desafortunadamente, el VBA de Excel no tiene constantes definidas para cada uno de los 56 colores de la paleta. Los únicos colores definidos, por nombre, son miembros de la clase ColorConstants, y hay ocho miembros de la clase: vbBlack, vbWhite, vbRed, vbGreen, vbBlue, vbYellow, vbMagenta y vbCyan.

En VBA, puede usar la propiedad ColorIndex para definir qué color desea usar de la paleta de Excel. El problema es que ColorIndex no es un color; es un índice en la paleta. Por tanto, un ColorIndex de 1 es el primer color de la paleta, 2 es el segundo y así sucesivamente. Puedes ver esto en acción mirando el código de muestra en esta URL:

http://www.ozgrid.com/VBA/ReturnCellColor.htm

Este código examina la propiedad ColorIndex de una celda y devuelve un nombre de color. El nombre devuelto, sin embargo, no es una constante para el color; es sólo una descripción de qué color parece ser la paleta en ese índice.

Si desea establecer el color de una celda, debe usar la propiedad Color. Esta propiedad le permite utilizar las ocho constantes de color VBA mencionadas anteriormente. Da la casualidad de que si usa esta propiedad de Color para establecer el color interior de una celda, encontrará que los ocho colores nombrados corresponden a los valores de ColorIndex de 1 a 8. La siguiente macro ilustra esto muy bien:

Sub CheckColors()

Dim arr8Colors As Variant     Dim i As Integer

arr8Colors = Array( _       vbBlack, vbWhite, vbRed, vbGreen, _       vbBlue, vbYellow, vbMagenta, vbCyan)

For i = 0 To 7         Selection.Offset(i, 0).Interior.Color = arr8Colors(i)

Selection.Offset(i, 1).Value = Selection.Offset(i, 0).Interior.ColorIndex     Next i End Sub

Esta correspondencia para los primeros ocho valores entre Color y ColorIndex solo debe tomarse como un artefacto de la historia, que se remonta a los días en que Excel solo le permitía usar ocho colores, los ocho colores definidos con constantes de VBA. Si desea especificar algún otro color para una celda, debe usar la función RGB para especificar la propiedad Color, como se muestra aquí:

Selection.Interior.Color = RGB(128, 64, 255)

La función RGB le permite especificar los componentes rojo, verde y azul de cualquier color. Cada componente puede variar en valor de 0 a 255.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (2778) se aplica a Microsoft Excel 97, 2000, 2002 y 2003.