wijzig taal:

Kleuren kunnen op verschillende manieren gedefinieerd worden. In Office wordt met name gebruik gemaakt van notatie in RGB, Hex en Long. Andere kleurcoderingen die naast Office veel worden gebruikt zijn CMYK en HSL. Op internet zijn wel tools te vinden die de kleurcode van het ene formaat kan converteren naar een ander formaat. In dit artikel komen een aantal VBA functies aan de orde waarmee kleuren kunnen worden geconverteerd van het ene naar het andere formaat. Aan het eind van dit artikel is ook een download beschikbaar waarmee heel handig kleuren kunnen worden geconverteerd naar de verschillende kleurcoderingssystemen. In één oogopslag zijn dan alle verschillende coderingen te zien. Internet is dan niet meer nodig om kleuren te converteren.

RGB kleurcode

Met de RGB kleurcode worden kleuren vastgelegd door middel van 3 verschillende getallen. Deze getallen kunnen een waarde hebben van 0 tot en met 255. Het eerste getal staat voor de kleur Rood, het tweede getal voor de kleur Groen en het derde getal voor de kleur Blauw.

RGB kleuren

Bijvoorbeeld de kleur rood is RGB(255, 0, 0) en de kleur geel is RGB(255, 255, 0). Op die manier kunnen 2563 (=16.777.216)) verschillende kleuren worden gedefinieerd.

Hex kleurcode

Hex kleurcodes zijn gebaseerd op de RGB systematiek, alleen wordt de kleur niet vastgelegd met 3 verschillende getallen, maar met 1 hexadecimaal getal. Een hexadecimaal getal is gebaseerd op een 16-tallig talstelsel. Hiervoor worden de getallen 0 tot met 9 gebruikt en de letters A t/m F. In plaats van een getal van 0 t/m 255 wordt elke kleur nu vastgelegd met 2 karakters. Het getal 0 wordt in deze notatie weergegeven door 00 en het getal 255 door FF. Door de 3 karakterparen van de kleuren Rood, Geel en Blauw samen te voegen ontstaat er 1 hexadecimaal getal van 6 karakters.

Bijvoorbeeld de kleur rood is in hexadecimale notatie #FF0000 en de kleur geel is #FFFF00. Voor kleuren op websites kan in sommige gevallen ook een verkorte notatie gebruikt worden. Als de 3 karakterparen elk bestaan uit identieke karakters, dan kan volstaan worden met 1 karakter per kleur. Dus #FF00CC kan dan ook geschreven worden als #F0C en #222222 als #222.

Long kleurcode

De Long kleurcode is nog weer een andere notatie voor de RGB kleurcode. Dit kan onder andere worden gebruikt in VBA om een kleur vast te leggen. Hierbij wordt de RGB-kleurcode weergegeven in de vorm van 1 getal. Dit getal wordt verkregen door het getal voor Rood op te tellen met het getal voor Groen x 256 en met het getal Blauw x 256 x 256. Voor elke mogelijke kleur ontstaat op die manier een uniek getal.

Bijvoorbeeld GeelGroen is RGB(154, 205, 50). In Hex notatie is dat #9ACD32. De Long voor deze kleur kan dan als volgt berekend worden: 154 + 205 x 256 + 50 x 256 x 256 = 3.329.434.

VBA conversiefuncties voor RGB - Hex - Long

In deze sectie volgen een paar VBA conversie functies die gebruikt kunnen worden voor RGB, Hex en Long. Het Kleuren Conversie-bestand dat aan het eind van dit artikel gedownload kan worden bevat nog andere conversie functies.

Public Function ConvertRGBToHEX(iRed As Integer, iGreen As Integer, iBlue As Integer) As String
    ConvertRGBToHEX = "#" & Right("0" & Hex(iRed), 2) & Right("0" & Hex(iGreen), 2) & Right("0" & Hex(iBlue), 2)
End Function

Public Function ConvertHexToRGB(sHexColor As String, sRGB As String) As Integer
    sHexColor = Replace(sHexColor, "#", "")
    Select Case UCase(sRGB)
        Case "R"
            ConvertHexToRGB = CInt("&h" & Left(sHexColor, 2))
        Case "G"
            ConvertHexToRGB = CInt("&h" & Mid(sHexColor, 3, 2))
        Case "B"
            ConvertHexToRGB = CInt("&h" & Right(sHexColor, 2))
    End Select
End Function

Public Function ConvertRGBToLong(iRed As Integer, iGreen As Integer, iBlue As Integer) As Long
    ConvertRGBToLong = RGB(iRed, iGreen, iBlue)
End Function

Public Function ConvertLongToRGB(lColor As Long, sRGB As String) As Integer
    Select Case UCase(sRGB)
        Case "R"
            ConvertLongToRGB = lColor Mod 256
        Case "G"
            ConvertLongToRGB = lColor \ 2 ^ 8 Mod 256
        Case "B"
            ConvertLongToRGB = lColor \ 2 ^ 16 Mod 256
    End Select
End Function

Public Function ConvertLongToHex(lColor As Long) As String
    Dim sRed As String, sGreen As String, sBlue As String
    sRed = Right("00" & Hex(lColor Mod 256), 2)
    sGreen = Right("00" & Hex(lColor \ 2 ^ 8 Mod 256), 2)
    sBlue = Right("00" & Hex(lColor \ 2 ^ 16 Mod 256), 2)
    ConvertLongToHex = "#" & sRed & sGreen & sBlue
End Function

Public Function ConvertHexToLong(sHexColor As String) As Long
    Dim sRed As String, sGreen As String, sBlue As String
    sHexColor = Replace(sHexColor, "#", "")
    sRed = Left(sHexColor, 2)
    sGreen = Mid(sHexColor, 3, 2)
    sBlue = Right(sHexColor, 2)
    ConvertHexToLong = CLng("&h" & sBlue) * 2 ^ 16 + CLng("&h" & sGreen) * 2 ^ 8 + CLng("&h" & sRed)
End Function

CMYK kleurcode

Bij de CYMK kleurcode worden de kleuren vastgelegd door middel van 4 getallen. Het gaat hierbij om de 4 kleuren Cyaan, Geel (Yellow), Magenta en Zwart (Key - Black). Deze getallen kunnen een waarde hebben tussen de 0% en 100%. Deze kleurcode wordt vooral gebruikt in de grafische industrie.

CMYK kleuren

In Office pakketten kan de CMYK kleurcode niet gebruikt worden.

HSL kleurcode

In de HSL kleurcode worden kleuren vastgelegd in drie getallen. Het eerste getale betreft de Hue (tint) en deze moet opgegeven worden in graden (tussen de 0 en 360). De volgende 2 getallen betreffen respectievelijk Saturation (verzadiging/intensiteit) en Lightness (helderheid). Deze laatste 2 getallen moeten opgegeven worden in een percentage tussen de 0% en 100%.

In Excel kan HSL gebruikt worden wanneer bijvoorbeeld een achtergrondkleur wordt ingesteld. Selecteer hiervoor een cel en kies voor Celeigenschappen -> Opvulling -> Meer kleuren.... Als vervolgens op het tabje Aangepast wordt geklikt dan kan bij kleurmodel gekozen worden voor HSL. Standaard is het kleurmodel RGB. Excel gebruikt overigens bij HSL wel afwijkende getallen. In plaats van graden en percentages, moet hier nu alle 3 de waardes opgegeven worden in getallen tussen 0 en 255.

Kleuren conversie tool

Om het converteren van kleuren gemakkelijk te maken is er Excel bestand gemaakt waarbij heel eenvoudig de waarden in deze kleurcodes kan worden bepaald.

kleuren conversie

Elk veld op het formulier kan handmatig gewijzigd worden, waarna de gevolgen van deze wijziging automatisch worden doorgevoerd in de overige velden op het formulier.

Het bestand bevat ook diverse conversie functies waarbij alle kleurcodes kunnen worden omgezet naar een Long en vice versa. Met behulp van deze conversie functies kunnen alle kleurconversies berekend worden.

In de nieuwste versie van de tool zijn ook de kleurcodes die gebruikt worden op VBA formulieren toegevoegd. Hiermee kunnen ook zogenaamde systeemkleuren (dat zijn kleuren die beginnen met &H80) geconverteerd worden naar de andere kleurcodes. Dit laatste werkt alleen in Windows.

Download de Kleuren Conversie tool:
zip-11Kleuren conversie 1.2
 

Vragen / suggesties

Hopelijk heeft dit artikel geholpen bij het converteren van kleuren met VBA. Als er verdere vragen over dit onderwerp zijn of suggesties voor verbetering, plaats dan een reactie hieronder.

arrow_up