Neil usa mucho los colores en sus hojas de trabajo. Sabe que puede generar un color basado en un valor RGB numérico (y como se explica en otros temas de ExcelTips). A Neil le gustaría hacer lo contrario: determinar un valor RGB. Se pregunta si hay una forma de regresar (a través de una función o macro)

el valor RGB del color utilizado para llenar una celda.

Excel no incluye una función para hacer esto, pero puede crear su propia función definida por el usuario. La función que use depende de lo que realmente desee que vuelva a su hoja de trabajo. Por ejemplo, si desea que se devuelva el código hexadecimal tradicional de seis caracteres para los colores RGB, debe utilizar la siguiente macro muy simple:

Function getRGB1(rcell) As String     Dim sColor As String

sColor = Right("000000" & Hex(rcell.Interior.Color), 6)

getRGB1 = Right(sColor, 2) & Mid(sColor, 3, 2) & Left(sColor, 2)

End Function

Esta macro observa el color interior de cualquier celda a la que haga referencia, coloca los valores hexadecimales del color en el orden correcto y devuelve la cadena a Excel. Para usar la función, simplemente invocala, en tu hoja de trabajo, con una celda referenciada de esta manera:

=getRGB1(B4)

Sin embargo, es posible que no desee los códigos hexadecimales tradicionales para los colores RGB.

Si desea obtener los valores decimales para cada uno de los colores, la siguiente macro devuelve eso:

Function getRGB2(rcell) As String     Dim C As Long     Dim R As Long     Dim G As Long     Dim B As Long

C = rcell.Interior.Color     R = C Mod 256     G = C \ 256 Mod 256     B = C \ 65536 Mod 256     getRGB2 = "R=" & R & ", G=" & G & ", B=" & B End Function

Invocada de la misma forma que la macro getRGB1, esta versión devuelve una cadena como «R = 255, G = 204, B = 0». También puede modificar la macro aún más para que devuelva un valor único, según un parámetro que establezca:

Function getRGB3(rcell As Range, Optional opt As Integer) As Long     Dim C As Long     Dim R As Long     Dim G As Long     Dim B As Long

C = rcell.Interior.Color     R = C Mod 256     G = C \ 256 Mod 256     B = C \ 65536 Mod 256

If opt = 1 Then         getRGB3 = R     ElseIf opt = 2 Then         getRGB3 = G     ElseIf opt = 3 Then         getRGB3 = B     Else         getRGB3 = C     End If End Function

Para usar la macro, simplemente agregue un segundo parámetro a la función utilizada en su hoja de trabajo, especificando lo que desea:

=getRGB3(B4,1)

Si el segundo parámetro es 1, la función devuelve solo el valor rojo. Si especifica un segundo parámetro de 2, se devuelve el valor verde y 3 devuelve el valor azul. Cualquier otro valor para el segundo parámetro (o si lo omite por completo) devuelve el valor decimal completo del color interior.

Si no desea seguir el camino de la creación de una macro, o si desea determinar los colores en algo más que su hoja de cálculo de Excel, podría considerar una utilidad de terceros. Uno que parece interesante es Instant Eyedropper, que es gratis. Puedes encontrar más información al respecto aquí:

http://instant-eyedropper.com

_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 (10179) se aplica a Microsoft Excel 97, 2000, 2002 y 2003.

Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Determining_the_RGB_Value_of_a_Color [Determinación del valor RGB de un color].