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