Bestimmen des RGB-Werts einer Farbe (Microsoft Excel)
Neil verwendet in seinen Arbeitsblättern häufig Farben. Er weiß, dass er eine Farbe basierend auf einem numerischen RGB-Wert erzeugen kann (und wie in anderen Problemen mit ExcelTips erläutert). Neil möchte das Gegenteil tun – einen RGB-Wert bestimmen. Er fragt sich, ob es eine Möglichkeit gibt, (über Funktion oder Makro) zurückzukehren
Der RGB-Wert der Farbe, mit der eine Zelle gefüllt wird.
Excel enthält hierfür keine Funktion, Sie können jedoch Ihre eigene benutzerdefinierte Funktion erstellen. Die von Ihnen verwendete Funktion hängt davon ab, was Sie tatsächlich zu Ihrem Arbeitsblatt zurückkehren möchten. Wenn Sie beispielsweise den traditionellen sechsstelligen Hex-Code für RGB-Farben zurückgeben möchten, verwenden Sie das folgende sehr einfache Makro:
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
Dieses Makro überprüft die Innenfarbe für jede Zelle, auf die Sie verweisen, setzt die Hex-Werte für die Farbe in die richtige Reihenfolge und gibt die Zeichenfolge an Excel zurück. Um die Funktion zu verwenden, rufen Sie sie einfach in Ihrem Arbeitsblatt mit einer Zelle auf, auf die auf diese Weise verwiesen wird:
=getRGB1(B4)
Möglicherweise möchten Sie jedoch nicht die herkömmlichen Hex-Codes für die RGB-Farben.
Wenn Sie die Dezimalwerte für jede der Farben erhalten möchten, gibt das folgende Makro Folgendes zurück:
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
Diese Version wird auf dieselbe Weise wie das getRGB1-Makro aufgerufen und gibt eine Zeichenfolge wie „R = 255, G = 204, B = 0“ zurück. Sie können das Makro auch noch weiter ändern, sodass es einen einzelnen Wert zurückgibt, basierend auf einem von Ihnen festgelegten Parameter:
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
Um das Makro zu verwenden, fügen Sie der in Ihrem Arbeitsblatt verwendeten Funktion einfach einen zweiten Parameter hinzu und geben Sie an, was Sie möchten:
=getRGB3(B4,1)
Wenn der zweite Parameter 1 ist, gibt die Funktion nur den roten Wert zurück. Wenn Sie einen zweiten Parameter von 2 angeben, wird der grüne Wert zurückgegeben, und 3 gibt den blauen Wert zurück. Jeder andere Wert für den zweiten Parameter (oder wenn Sie ihn vollständig weglassen) gibt den vollständigen Dezimalwert der Innenfarbe zurück.
Wenn Sie kein Makro erstellen möchten oder Farben in mehr als nur Ihrem Excel-Arbeitsblatt bestimmen möchten, sollten Sie ein Dienstprogramm eines Drittanbieters in Betracht ziehen. Eine, die interessant aussieht, ist Instant Eyedropper, die kostenlos ist. Weitere Informationen dazu finden Sie hier:
http://instant-eyedropper.com
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (10179) gilt für Microsoft Excel 97, 2000, 2002 und 2003.
Eine Version dieses Tippes für die Multifunktionsleistenoberfläche von Excel (Excel 2007 und höher) finden Sie hier: