24 septiembre, 2023

OBTENER CÓDIGO RGB DE LA PALETA DE COLORES DE EXCEL CON VBA

Hola a todos:

En principio este fin de semana no tenía pensado escribir ningún post, he estado bastante liado con temas personales y realmente el viernes me encontraba agotado y con ganas de descansar.

Pero hoy estoy un poco más libre y tengo una hora suelta para escribir un post. Hoy os quiero mostrar una forma de obtener el código RGB de cualquier color que forme parte de la paleta de colores de Excel.

Hace unas semanas escribí una entrada sobre cómo GENERAR PALETA DE COLORES CON VBA  era un ejercicio muy sencillo que tenía como objetivo el poder generar la paleta de colores, y además el de modificar un loop para recorrer determinado rango de filas y columnas.

Hoy voy a tratar de completar aquel trabajo inicial con unas líneas de código que nos servirán para mostrar el RGB.

En rojo están los cambios fundamentales.

'Option Explicit
Sub PALETA_COLOR()
'Definimos variables
Dim CONT As Integer, COL As Integer, i As Integer, Control As String
Dim Rojo As String, Verde As String, Azul As String
'Inicializamos proceso
CONT = 1
COL = 1
'Creamos loop para colorear celda con cada color index
'Cada 6 celdas seguimos el loop en la columna siguiente
For i = 1 To 56
If CONT < 5 Then
'Aplicamos color
Cells(CONT, COL).Interior.ColorIndex = i
'Obtenemos RGB
Control = WorksheetFunction.Rept("0", 6 - Len(Hex(Cells(CONT, COL).Interior.Color))) & Hex(Cells(CONT, COL).Interior.Color)
Rojo = Application.WorksheetFunction.Hex2Dec(Right(Control, 2))
Verde = Application.WorksheetFunction.Hex2Dec(Mid(Control, 3, 2))
Azul = Application.WorksheetFunction.Hex2Dec(Left(Control, 2))
Cells(CONT, COL).Value = Rojo & "|" & Verde & "|" & Azul
Cells(CONT, COL + 1).Value = "Color: " & i
CONT = CONT + 1
Else
'Aplicamos color
Cells(CONT, COL).Interior.ColorIndex = i
'Obtenemos RGB
Control = WorksheetFunction.Rept("0", 6 - Len(Hex(Cells(CONT, COL).Interior.Color))) & Hex(Cells(CONT, COL).Interior.Color)
Rojo = Application.WorksheetFunction.Hex2Dec(Right(Control, 2))
Verde = Application.WorksheetFunction.Hex2Dec(Mid(Control, 3, 2))
Azul = Application.WorksheetFunction.Hex2Dec(Left(Control, 2))
Cells(CONT, COL).Value = Rojo & "|" & Verde & "|" & Azul
Cells(CONT, COL + 1).Value = "Color: " & i
CONT = 1
COL = COL + 2
End If
Next i
End Sub

Lo que hacemos en cada una de las variables en las que almacenamos el número del color es:

En primer lugar pasar el número que se obtiene Interior.Color a la función Hex con la obtendremos una string representando su valor Hexagesimal. Y que debe contener 6 posiciones, con 0 hasta llegar al final.

WorksheetFunction.Rept("0", 6 - Len(Hex(Cells(CONT, COL).Interior.Color))) & Hex(Cells(CONT, COL).Interior.Color)

A continuación, por cada color extraemos parte del código que vamos a pasar a Dec con la función Hex2Dec

Ese valor será parte de los tres colores para componer nuestro código RGB.

El resultado es:

OBTENER CODIGO RGB DE LA PALETA DE COLORES DE EXCEL

Y eso es todo, espero que os sea de utilidad!!

Descarga el archivo de ejemplo pulsando en:

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

2 comentarios en «OBTENER CÓDIGO RGB DE LA PALETA DE COLORES DE EXCEL CON VBA»

  1. Hola necesito poder utilizar el color de relleno de una celda como criterio en la formula condicional CONTAR.SI.CONJUNTO. Me puedes ayudar?

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies