Hallo K.
das finde ich interessant und inspirierend!
Ich habe die Idee aufgegriffen und umgedreht:
- die Liste der Referenzfarben wird in einer Tabelle reingepackt,
- es wird gegen jede einzelne Element eine Distanz berechnet,
- die minimale Distanz und der passende Element werden zur Seite gelegt,
- am Ende die Farbe von minimal-Distanz-Element herausgegeben
Dim FarbListe() As String
Dim FarbListe_istInit As Boolean
Sub FarbListe_initieren()
If Not FarbListe_istInit Then FarbListe = Array( _
"0,0,0,Schwarz", "0,0,128,Marine", "0,0,139,DarkBlue", "0,0,205,mittelblau", "0,0,255,Blau", "0,100,0,DarkGreen", "0,128,0,GRÜN", _
"0,128,128,Teal", "0,139,139,DARKCYAN", "0,191,255,DeepSkyBlue", "0,206,209,DARKTURQUOISE", "0,250,154,MediumSpringGreen", "0,255,0,LIME", "0,255,127,SPRINGGREEN", _
"0,255,255,AQUA", "0,255,255,cyan", "25,25,112,mitternachtsblau", "30,144,255,dodgerblue", "32,178,170,lightseagreen", "34,139,34,ForestGreen", "46,139,87,SeaGreen", _
"47,79,79,darkslategray", "47,79,79,DarkSlateGrey", "50,205,50,LimeGreen", "60,179,113,MediumSeaGreen", "64,224,208,türkis", "65,105,225,RoyalBlue", "70,130,180,SteelBlue", _
"72,61,139,DarkSlateBlue", "72,209,204,MEDIUMTURQUOISE", "75,0,130,indigo", "85,107,47,DarkOliveGreen", "95,158,160,CadetBlue", "100,149,237,CornflowerBlue", "102,205,170,MediumAquamarin", _
"105,105,105,DIMGRAY", "105,105,105,DimGrey", "106,90,205,SLATEBLUE", "107,142,35,olivedrab", "112,128,144,SlateGray", "112,128,144,Schiefergrün", "119,136,153,LIGHTSLATEGRAY", _
"123,104,238,mediumslateblue", "124,252,0,LawnGreen", "127,255,0,CHARTREUSE", "127,255,212,Aquamarin", "128,0,0,MAROON", "128,0,128,LILA", "128,128,0,Oliv", _
"128,128,128,Grau", "128,128,128,grau", "135,206,235,SkyBlue", "135,206,250,LightSkyBlue", "138,43,226,BLUEVIOLET", "139,0,0,darkred", "139,0,139,darkmagenta", _
"139,69,19,SATTELBROWN", "143,188,143,DARKSEAGREEN", "144,238,144,hellgrün", "147,112,219,MEDIUMPURPLE", "148,0,211,DarkViolet", "152,251,152,PaleGreen", "153,50,204,DarkOrchid", _
"154,205,50,YELLOWGREEN", "160,82,45,Sienna", "165,42,42,Braun", "169,169,169,darkgray", "169,169,169,DARKGREY", "173,216,230,LightBlue", "173,255,47,GreenYellow", _
"175,238,238,PALETURQUOISE", "176,196,222,lightsteelblue", "176,224,230,PowderBlue", "178,34,34,FireBrick", "184,134,11,DarkGoldenRod", "186,85,211,MediumOrchid", "188,143,143,rosybrown", _
"189,183,107,DarkKhaki", "192,192,192,Silber", "199,21,133,MediumVioletRed", "205,92,92,IndianRed", "205,133,63,PERU", "210,105,30,Schokolade", "210,180,140,tan", _
"211,211,211,LightGray", "211,211,211,LightGrey", "216,191,216,THISTLE", "218,112,214,Orchidee", "218,165,32,Goldenrod", "219,112,147,PaleVioletRed", "220,20,60,Crimson", _
"220,220,220,Gainsboro", "221,160,221,Pflaume", "222,184,135,Burlywood", "224,255,255,LightCyan", "230,230,250,Lavendel", "233,150,122,DarkSalmon", "238,130,238,Violett", _
"238,232,170,Palegoldenrod", "240,128,128,lightcoral", "240,230,140,KHAKI", "240,248,255,aliceblue", "240,255,240,Honeydew", "240,255,255,azure", "244,164,96,sandybrown", _
"245,222,179,WEIZEN", "245,245,220,Beige", "245,245,245,Whitesmoke", "245,255,250,MintCream", "248,248,255,GHOSTWHITE", "250,128,114,Salmon", "250,235,215,AntiqueWhite", _
"250,240,230,Bettwäsche", "250,250,210,lightgoldenrodyellow", "253,245,230,OLDLACE", "255,0,0,Rot", "255,0,255,fuchsia", "255,0,255,Magenta", "255,20,147,deeppink", _
"255,69,0,ORANGERED", "255,99,71,Tomaten", "255,105,180,HOTPINK", "255,127,80,Korallen", "255,140,0,DARKORANGE", "255,160,122,LightSalmon", "255,165,0,Orange", _
"255,182,193,LIGHTPINK", "255,192,203,Rosa", "255,215,0,Gold", "255,218,185,Pfirsichpuff", "255,222,173,navajowhite", "255,228,181,Moccasin", "255,228,196,BISQUE", _
"255,228,225,MISTYROSE", "255,235,205,blanchedalmond", "255,239,213,papayawhip", "255,240,245,Lavendelblush", "255,245,238,SEASHELL", "255,248,220,CORNSILK", "255,250,205,LEMONCHIFFON", _
"255,250,240,FLORALWHITE", "255,250,250,Schnee", "255,255,0,Gelb", "255,255,224,LightYellow", "255,255,240,Ivory", "255,255,255,Weiß")
FarbListe_istInit = True
End Sub
Function Farbe_zuordnen(Zelle As Range)
Dim MinDist As Double
Dim RGB1
Dim Elt
Dim RGB2
Dim Dist As Double
Dim Naheste
MinDist = 99999
FarbListe_initieren
With Zelle.Font
RGB1 = Array(.Color Mod 256, (.Color \ 256) Mod 256, (.Color \ 65536) Mod 256)
End With
For Each Elt In FarbListe
RGB2 = Split(Elt, ",")
ReDim Preserve RGB2(0 To 2)
Dist = Sqr(((RGB1(0) - CLng(RGB2(0))) ^ 2 + (RGB1(1) - CLng(RGB2(1))) ^ 2 + (RGB1(2) - CLng(RGB2(2))) ^ 2))
If Dist MinDist Then
MinDist = Dist
Naheste = Elt
End If
If Dist = 0 Then Exit For 'wir sparen uns den Rest
Next
Farbe_zuordnen = Split(Naheste, ",")(3)
End Function
VG
Yal