HERBERS Excel-Forum - das Archiv
RGB-Wert v. Zelle ausgeb. in drei Zellen R,G,B
udo

Hallo Excel-Profis,
bräuchte bitte eure Hilfe,
Möchte gerne in vier Spalten ( A-D ) folgende Auswertung stattfinden lassen.
Beliebige Zeile.
In A wird manuell über Formatierungsfenster die Zelle gefärbt ( benutzerdefiniert )
In Spalte B,C ud D ( gleiche Zeile ) soll dann der R,G,B Zahlenwert stehen.
Per Formel oder VB.
könntet ihr mir hierbei helfen, wäre euch sehr dankbar.

AW: RGB-Wert v. Zelle ausgeb. in drei Zellen R,G,B
Daniel

Hi
folgender Code in ein allgemeines Modul:
Function FarbAnteil(Zelle As Range, GrundFarbe As String) As Long
Dim Farbe As Long
Application.Volatile
Farbe = Zelle(1).Interior.Color
Select Case GrundFarbe
Case "R": FarbAnteil = Farbe And 255
Case "G": FarbAnteil = (Farbe And 65280) / 256
Case "B": FarbAnteil = (Farbe And 16711680) / 65536
Case Else: FarbAnteil = -1
End Select
End Function

dann kannst du dir die einzelnen Farbkomponenten der Hintergrundfarbe einer Zelle als Wert ausgeben lassen.
Erster Parameter ist die Zelle, die du analysieren willst, der zweite Parameter beschreibt den Farbanteil den du auswerten willst. Zulässtig sind natürlich "R", "G" oder "B".
dh in Zelle B1 kommt die Formel =FarbAnteil($A1;"R")
in Zelle C1 kommt die Formel: =FarbAnteil($A1;"G")
und in Zelle D1 dann logischerweise: =FarbAnteil($A1;"B")
beachte, dass das Ändern einer Hintergrundfarbe Excel nicht dazu veranlasst, seine Formeln neu zu berechnen!
dh du musst immer erst noch irgend einen Zellwert ändern (aufgrund des Application.Volatil ist es ega welchen), damit die Formelergebnisse aktuell sind.
Gruß Daniel

1000x Danke !
udo

Hallo Daniel,
ich Danke Dir sehr, dein Code passt prima !
Application.Volatil sagt mir zwar noch gar nichts, hatte ich bislang noch nie ?
werd ich mich nachher damit auseinander setzen.
Große Klasse !
Danke Dir !
Gruß udo

AW: 1000x Danke !
Daniel

Hi
ist ganz einfach:
normalerweise berechnet Excel eine Formel nur dann neu, wenn im Zellbereich, welchen die Formel verwendet, ein Wert oder ein Formelergebnis verändert hat.
eine volatile Formel wird jedoch bei jeder Änderung in Excel neu berechnet, egal wo sie passiert.
normaler weise ist das unerwünscht, weil es schlecht für die Performance der Datei ist, wenn immer alle Formeln neu berechnet werden auch wenn es nicht notwendig ist.
das Problem ist hier, dass das Ändern der Farbe keine Neuberechnung auslöst und du nicht nur die Farbe sondern auch den Wert der ausgelesenen Zelle ändern musst, damit die Farbwerte aktuell sind.
dadurch, dass die Funktion volatil ist, aktualisiert sie sich aber bei jeder Änderung einer beliebigen Zelle, dh wenn du viele Farbformeln hast und du hast nachträglich viele Hintergrundfarben geändert, dann reicht es durch die Volatilität aus, wenn du eine beliebige Zelle änderst um alle Formeln zu aktualisieren und du musst nicht jede Formel einzeln aktualisieren.
gruß Daniel

...oder einfach F9 (für Neuberechnung!) (owT)
EtoPHG


... klasse - Danke Dir sehr !!!! (owT)
udo

...

RGB-Wert v. Zelle ausgeb. in drei Zellen R,G,B
udo

Hallo Excel-Profis,
bräuchte bitte eure Hilfe,
Möchte gerne in vier Spalten ( A-D ) folgende Auswertung stattfinden lassen.
Beliebige Zeile.
In A wird manuell über Formatierungsfenster die Zelle gefärbt ( benutzerdefiniert )
In Spalte B,C ud D ( gleiche Zeile ) soll dann der R,G,B Zahlenwert stehen.
Per Formel oder VB.
könntet ihr mir hierbei helfen, wäre euch sehr dankbar.

AW: RGB-Wert v. Zelle ausgeb. in drei Zellen R,G,B
Daniel

Hi
folgender Code in ein allgemeines Modul:
Function FarbAnteil(Zelle As Range, GrundFarbe As String) As Long
Dim Farbe As Long
Application.Volatile
Farbe = Zelle(1).Interior.Color
Select Case GrundFarbe
Case "R": FarbAnteil = Farbe And 255
Case "G": FarbAnteil = (Farbe And 65280) / 256
Case "B": FarbAnteil = (Farbe And 16711680) / 65536
Case Else: FarbAnteil = -1
End Select
End Function

dann kannst du dir die einzelnen Farbkomponenten der Hintergrundfarbe einer Zelle als Wert ausgeben lassen.
Erster Parameter ist die Zelle, die du analysieren willst, der zweite Parameter beschreibt den Farbanteil den du auswerten willst. Zulässtig sind natürlich "R", "G" oder "B".
dh in Zelle B1 kommt die Formel =FarbAnteil($A1;"R")
in Zelle C1 kommt die Formel: =FarbAnteil($A1;"G")
und in Zelle D1 dann logischerweise: =FarbAnteil($A1;"B")
beachte, dass das Ändern einer Hintergrundfarbe Excel nicht dazu veranlasst, seine Formeln neu zu berechnen!
dh du musst immer erst noch irgend einen Zellwert ändern (aufgrund des Application.Volatil ist es ega welchen), damit die Formelergebnisse aktuell sind.
Gruß Daniel

1000x Danke !
udo

Hallo Daniel,
ich Danke Dir sehr, dein Code passt prima !
Application.Volatil sagt mir zwar noch gar nichts, hatte ich bislang noch nie ?
werd ich mich nachher damit auseinander setzen.
Große Klasse !
Danke Dir !
Gruß udo

AW: 1000x Danke !
Daniel

Hi
ist ganz einfach:
normalerweise berechnet Excel eine Formel nur dann neu, wenn im Zellbereich, welchen die Formel verwendet, ein Wert oder ein Formelergebnis verändert hat.
eine volatile Formel wird jedoch bei jeder Änderung in Excel neu berechnet, egal wo sie passiert.
normaler weise ist das unerwünscht, weil es schlecht für die Performance der Datei ist, wenn immer alle Formeln neu berechnet werden auch wenn es nicht notwendig ist.
das Problem ist hier, dass das Ändern der Farbe keine Neuberechnung auslöst und du nicht nur die Farbe sondern auch den Wert der ausgelesenen Zelle ändern musst, damit die Farbwerte aktuell sind.
dadurch, dass die Funktion volatil ist, aktualisiert sie sich aber bei jeder Änderung einer beliebigen Zelle, dh wenn du viele Farbformeln hast und du hast nachträglich viele Hintergrundfarben geändert, dann reicht es durch die Volatilität aus, wenn du eine beliebige Zelle änderst um alle Formeln zu aktualisieren und du musst nicht jede Formel einzeln aktualisieren.
gruß Daniel

...oder einfach F9 (für Neuberechnung!) (owT)
EtoPHG


... klasse - Danke Dir sehr !!!! (owT)
udo

...

Bewerten Sie hier bitte das Excel-Portal