HERBERS Excel-Forum - das Archiv

Thema: bedingte Formatierung - Regeln

bedingte Formatierung - Regeln
f.seelos
Liebe Community,

ich stehe vor einer Herausforderung bei der Arbeit mit Excel und VBA und hoffe, dass mir jemand weiterhelfen kann. Ich habe eine Arbeitsmappe mit mehreren bedingten Formatierungsregeln in einer Spalte. Mein Ziel ist es, mithilfe einer VBA-Funktion zu ermitteln, welche Regel aktuell in einer bestimmten Zelle angewendet wird, und die Indexnummer dieser Regel als Ergebnis (z.B. "1", "2",....) zurückzugeben.

Regel Nr. 1=S8=""
Regel Nr. 2=S8Regel Nr. 3=S8<=HEUTE()+30
Regel Nr. 4=UND(ODER(R8="";R8="OK");S8>(HEUTE()+30))
Regel Nr. 5=R8="Mängel"

Userbild

Ich habe auch schon versucht die Zellfarbe (RGB) die bei einer Regel hinterlegt ist heraus zu lesen jedoch ohne Erfolg.
Dieser Lösungsansatz funktionierte bei mir nur wenn die Zellfarbe manuell (ohne bedingte Formatierung) eingegeben wird. Jedoch bei über 500 Zeilen ist das keine praktikable lösung.

Evtl. könnte mir jemand weiterhelfen mit einem anderen Lösungsansatz?
AW: bedingte Formatierung - Regeln
Onur
Dann mach doch einfach eine Formel mit WENNs und den Bedingungen:
Wenn du S8 untersuchen willst
WENN(S8="";1;WENN(S8
AW: bedingte Formatierung - Regeln
daniel
Hi
wenn du die Zellfarbe der Bedingten Formatierung auslesen willst, dann musst du DisplayFormat verwenden:
... Cells(...).DisplayFormat.Interior.Color

problem an der Sache ist, dass Mikrosoft es verboten hat, die diese Methode in Formeln in Excelzellen anzuwenden.
Dh du musst entweder ein Makro schreiben, dass die Auswertung ausführt (welches dann aber statisch ist und bei jeder Änderung erneut ausgeführt werden müsste).
oder du musst, wenn du das als Formel haben willst, VBA austricksen.
das geht so, dass man die eigentliche Funktion nicht direkt, sondern per Evaluate ausführt:

dazu diese beiden Funktionen in ein allgemeines Modul:
Function RGB_Farbe(zelle As Range)

RGB_Farbe = Evaluate("=RGB_Farbe_2(" & zelle.Address(0, 0) & ")")
End Function

Function RGB_Farbe_2(zelle As Range)
RGB_Farbe_2 = zelle(1).DisplayFormat.Interior.Color
End Function

und in die Zelle kommt dann die Formel: =RGB_Farbe(A1)

wenn du hingegen =RGB_Farbe_2(A1) in eine Zelle schreibst, bekommst du einen Fehler.

Gruß Daniel


Gruß Daniel

AW: bedingte Formatierung - Regeln
f.seelos
Hallo Daniel,

vielen Dank für deine Lösung.
könnte man das evtl. erweitern das es bei jedem drücken des Speicherbuttons die komplette Spalte aktualisiert?

:-/
AW: bedingte Formatierung - Regeln
daniel
ja, kann man bestimmt.
man sollte halt wissen, was du genau machst.
prinzipell kann man solchen Aktionen wie Speichern Makros zuordnen, die automatisch ausgeführt werden, wenn du die Aktion startest.

geh mal ins Modul "DieseArbeitsmappe" und wähle in der linken Combobox über dem Codefenster "Workbook" aus.
in der rechten Combobox findest du dann alle möglichen Makros, die so einer Aktion zugeordnet sind und du kannst auswählen, welches Makro du haben willst (die betroffene Aktion ergibt sich aus dem Namen). wenn du das machst, wird das Makro mit Kopf- und Endzeile erstellt, und du kannst dazwischen den notwendigen Code eintragen.

Gruß Daniel