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: