Colores Ral y otros

Todo en esta vida tiene color, y es costumbre pintar todo aquello que hacemos para darle un aspecto agradable y conforme a nuestro gusto. El siguiente problema radica en las ocasiones en las que queremos decir a alguien que pinte un objeto de un determinado color. A menos que sea blanco o negro, el resto de los colores tienen muchos matices. Por esta razón surge la carta RAL, donde se le asigna a cada color un valor numérico.

Como dice en la página web de RAL, el ojo humano distingue unos 10 millones de colores. ¿Como se puedes decir a que color te refieres?

Exiten otras cartas de colores como PANTONE, Pantone Inc. es una empresa con sede en Carlstadt, Nueva Jersey (Estados Unidos), creadora de un sistema de control de color para las artes gráficas. Su sistema de definición cromática es el más reconocido y utilizado por lo que normalmente se llama Pantone al sistema de control de colores. Este modo de color a diferencia de los modos CMYK y RGB suele denominarse color directo.

Normalmente, en el mundo de la construcción se suele trabajar con la carta de colores RAL, por esta razón, aquí dejo un archivo pdf, con la carta de colores RAL con su correspondiente valor R,G,B en hexadecimal, para poder utilizarlo en programas gráficos, además de un listado de colores por su nombre.

Para pasar de un numero hexadecimal a decimal, he utilizado la siguiente función:

Public Function ConvertHexToDecimal(ByVal HexValue As String) As Variant
 Dim rValue, A As Long
 Dim Temp, Rev As String
 
 Rev = StrReverse(HexValue)
 `Numbers are read from right to left, unlike text, which
 `are read from right to left; therefore, the string should
 `be reversed so it can be read like a normal string.
 
 For A = 1 To Len(HexValue)
 Temp = Mid$(Rev, A, 1)
 `This, along with the for-next loop allows you to
 `read all the characters in the screen 1 at a time
 
 If Val(Temp) = Temp Then
 `Character is a number
 If A = 1 Then
 `Character is a number, and is the first
 `character in the string
 rValue = Val(Temp)
 `Because the character is the first of the
 `string, there is no value in rValue yet, so
 `you can just assign the value
 Else
 rValue = rValue + (Val(Temp) * (16 ^ (A - 1)))
 `So this adds to rValue.. it takes it`s
 `current value, and adds to it, so the
 `previous value isn`t lost.  Because single
 `digit hex values can be up to a value of 15,
 `the decimal value of 10 would be 16.  Now,
 `values are not their own when they are not
 `their own if they aren`t the first character
 `of the string.  Here, we use exponents..
 `if 16^0 were 0, then I would have done this
 `diffrently, but because it isn`t, it has to
 `be it`s position(a) -1.  The -1 is because
 `you don`t multiply by 16 on the first
 `character, you start it on the 2nd character.
 End If
 Else
 Select Case LCase$(Temp)
 `Because single digit hex values can go up to
 `15, more characters were needed, so A - F
 `were added in.  A has the value of 10, B has
 `the value of 11, and so forth.  G is not a
 `valid character because it is a 15 value
 `system.  Here, it just goes through the
 `valid letters, and does the same thing it did
 `with numbers.
 Case "a"
 If A = 1 Then
 rValue = HexA
 Else
 rValue = rValue + (HexA * (16 ^ (A - 1)))
 End If
 Case "b"
 If A = 1 Then
 rValue = HexB
 Else
 rValue = rValue + (HexB * (16 ^ (A - 1)))
 End If
 Case "c"
 If A = 1 Then
 rValue = HexC
 Else
 rValue = rValue + (HexC * (16 ^ (A - 1)))
 End If
 Case "d"
 If A = 1 Then
 rValue = HexD
 Else
 rValue = rValue + (HexD * (16 ^ (A - 1)))
 End If
 Case "e"
 If A = 1 Then
 rValue = HexE
 Else
 rValue = rValue + (HexE * (16 ^ (A - 1)))
 End If
 Case "f"
 If A = 1 Then
 rValue = HexF
 Else
 rValue = rValue + (HexF * (16 ^ (A - 1)))
 End If
 End Select
 End If
 DoEvents
 `ALWAYS have this in loops.. you don`t know how slow
 `the computer it`s being operated on is, the lack of
 `DoEvents could cause the computer freeze up
 `temporerily, or even force you to force shutdown.
 Next A
 ConvertHexToDecimal = rValue
 `Sends the value that has been made out :)
End Function


Function set_CELL_BACKCOLOR(vSheet,lRowIndex&,iColIndex%,r,g,b)
`calls: getSheetCell
REM returns color code as number
ThisComponent.Sheets.getByName(vSheet)
.getCellByPosition(lRowIndex,iColIndex).CellBackColor = RGB(r,g,b)
End Function

El archivo pdf con los colores:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *