Frecuentemente me preguntan en mis formaciones por la paleta de colores, en especial cuando hablamos de formatos...
Veremos hoy un sencillo ejemplo de cómo obtener las equivalencias entre las propiedades (.Color y .ColorIndex) y la función RGB para trabajar con colores en Excel.
En el siguiente código listamos los 57 colores permitidos por la propiedad .ColorIndex (de 0 a 56), entre los 16.777.216 de colores posibles de .Color, y cómo recuperarlos con la función RGB (Red, Green, Blue - valores entre 0 y 255-) estandarizada...
Igualmente veremos cuál es la forma de expresarlo en formato HTML.
Para resolver nuestra cuestión en particular, insertamos el siguiente código dentro de un módulo estándar del explorador de proyectos del Editor de VB:
El resultado lo vemos en la siguiente imagen:
Observemos, como curiosidad, como los valores puros de los colores 3 (Rojo), 4 (Verde) y 5 (Azul) con la propiedad .ColorIndex, corresponden con la forma RGB a los valores RGB: 255,0,0; RGB: 0,255,0 y RGB: 0, 0, 255 respectivamente...
Veremos hoy un sencillo ejemplo de cómo obtener las equivalencias entre las propiedades (.Color y .ColorIndex) y la función RGB para trabajar con colores en Excel.
En el siguiente código listamos los 57 colores permitidos por la propiedad .ColorIndex (de 0 a 56), entre los 16.777.216 de colores posibles de .Color, y cómo recuperarlos con la función RGB (Red, Green, Blue - valores entre 0 y 255-) estandarizada...
Igualmente veremos cuál es la forma de expresarlo en formato HTML.
Para resolver nuestra cuestión en particular, insertamos el siguiente código dentro de un módulo estándar del explorador de proyectos del Editor de VB:
Sub PaletaColores()
'Paleta básica de 57 colores (0 to 56)
Dim c As Long
Dim strIni As String, strHEX As String
'Añadimos cabecera...
With Range("A1:H1")
.Value = Array("Color:", "Interior", "Font", "HTML (Hexadecimal)", "Rojo (R)", "Verde (G)", "Azul (B)", "ColorIndex")
.Font.Bold = True
End With
'recorremos los 57 colores...
For c = 0 To 56
'Indicamos Número de Color....
Cells(c + 2, 1).Value = "Color " & c & ":"
'damos color al Relleno de la celda, empleando la propiedad ColoIndex
Cells(c + 2, 2).Interior.ColorIndex = c
'damos color a la Fuente de la celda
'escribimos el texto [Color...]
With Cells(c + 2, 3)
.Font.ColorIndex = c
.Value = "[Color " & c & "]"
End With
'a partir del valor numérico recuperado de la propiedad Color de la celda
'conseguimos un identificador de seis caracteres....
strIni = Right("000000" & Hex(Cells(c + 2, 2).Interior.Color), 6)
Rojo = Right(strIni, 2) 'dos caracteres por la derecha para el Rojo
Verde = Mid(strIni, 3, 2) 'dos caracteres enmedio para el Verde
Azul = Left(strIni, 2) 'dos caracteres por la izquierda para el Azul
'componemos el código Hexadecimal
strHEX = Rojo & Verde & Azul
'Añadimos la almohadilla necesara para obtener el código de color en HTML/Hexadecimal
Cells(c + 2, 4).Value = "#" & strHEX
'Obtenemos en número decimal el valor del color
'empleamos la función HEX.A.DEC
'y descomponemos el valroes decimales para conseguir el código de color en formato RGB
Cells(c + 2, 5).Formula = Application.WorksheetFunction.Hex2Dec(Rojo)
Cells(c + 2, 6).Formula = Application.WorksheetFunction.Hex2Dec(Verde)
Cells(c + 2, 7).Formula = Application.WorksheetFunction.Hex2Dec(Azul)
'Acabamos añadiendo el código de color para ColorIndex
Cells(c + 2, 8).Value = Cells(c + 2, 2).Interior.Color
Next c
'autoajustamos ancho de columnas
Range("A1:H1").EntireColumn.AutoFit
End SubEl resultado lo vemos en la siguiente imagen:
Observemos, como curiosidad, como los valores puros de los colores 3 (Rojo), 4 (Verde) y 5 (Azul) con la propiedad .ColorIndex, corresponden con la forma RGB a los valores RGB: 255,0,0; RGB: 0,255,0 y RGB: 0, 0, 255 respectivamente...



muy bueno, me sirvió.
ResponderEliminarexcelente
ResponderEliminarHermosa pieza de codigo, excepto por una cosa, deberia tener una sentencia que cree una nueva hoja antes que nada, de manera que NOOOOOOO borres la hoja actual mandando a la $#$#@$#@$#@, tus notas de toda la mañana. Solo una sugerencia.
ResponderEliminarbuen aporte gracias
ResponderEliminar