ColorIndex genera hasta 57 colores:
Podemos generar el listado anterior con los colores de relleno y de fuente con el siguiente código:
Sub ColorIndex() Dim Cindex As Integer For Cindex = 0 To 56 Cells(Cindex + 1, 1).Interior.ColorIndex = Cindex Cells(Cindex + 1, 1).Value = "Interior.ColorIndex = " & Cindex Cells(Cindex + 1, 2).Font.ColorIndex = Cindex Cells(Cindex + 1, 2).Value = "Font.ColorIndex = " & Cindex If Cells(Cindex + 1, 1).Interior.ColorIndex = 1 _ Then Cells(Cindex + 1, 1).Font.ColorIndex = 48 Next Cindex Columns(1).EntireColumn.AutoFit Columns(2).EntireColumn.AutoFit End SubLa propiedad Color es más extensa que ColorIndex ya que permite especificar colores con valores numéricos, hexadecimales, octales y RGB. Además, la paleta de Color es más extensa que la de ColorIndex. 57 colores en ColorIndex, 256 3 en RGB (16.777.216). Sin embargo, por su simplicidad, un índice del 0 al 56 en la paleta, podemos optar por ColorIndex en lugar de especificar 3 dígitos de 0 a 255 para un color en RGB.
Para ver el valor de las propiedades seleccionamos una celda y en la ventana de inmediato escribimos
?Selection.Interior.ColorIndex o ?Selection.Interior.Color y presionamos Entrar.
En una celda que no tiene asignado un color de relleno el resultado de ColorIndex es -4142 (xlColorIndexNone) y el de Color es 16777215. Como ColorIndex solamente admite 56 colores, es posible que a dos colores diferentes les asigne el mismo valor. ColorIndex asignará el valor más cercano de la paleta del 0 al 56. Para conocer y asignar un color con precisión deberemos usar la propiedad Color.
Para mostrar en la barra de estado la propiedad ColorIndex del relleno de una celda y del color de fuente añadimos estos dos eventos en la hoja deseada:
' Muestra las propiedades Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.StatusBar = "Celda actual: Interior.ColorIndex = " & _ ActiveCell.Interior.ColorIndex & " / Font.ColorIndex = " & _ ActiveCell.Font.ColorIndex End Sub
' Devuelve a Ms Excel el control de la barra de estado Private Sub Worksheet_Deactivate() Application.StatusBar = False End SubReferencias:
Artículo de Microsoft Developer Network
No hay comentarios:
Publicar un comentario