wie kann ich per VBA die Bedingte Formatierung (Formel) einer Zelle abfragen,
ob diese wahr oder falsch ausgibt?
Komme auch beim Durchstöbern anderer Beiträge zu diesem Thema nicht weiter!!!
M.f.G.
Lutz
Sub jupp()
With Worksheets(1).Range("B1:D10").FormatConditions _
.Add(xlCellValue, xlGreater, "=$a$1")
With .Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 3
End With
With .Font
.Bold = True
.ColorIndex = 4
End With
End With
End Sub
Um die bedingte Formatierung einer Zelle per VBA abzufragen, kannst Du folgendes Makro verwenden. Dieses Beispiel zeigt, wie Du prüfen kannst, ob die Bedingte Formatierung für den Bereich B1:D10 aktiv ist, wenn ein Wert größer als der Wert in A1 ist.
Sub AbfrageBedingteFormatierung()
Dim jn As Boolean
jn = Worksheets(1).Range("B1").FormatConditions(1).Font.Bold
If jn Then
MsgBox "Die bedingte Formatierung ist aktiv."
Else
MsgBox "Die bedingte Formatierung ist nicht aktiv."
End If
End Sub
In diesem Beispiel wird überprüft, ob die Schriftart in Zelle B1 fett ist. Du kannst die Logik anpassen, um die Formatierung für andere Zellen oder Bedingungen zu überprüfen.
Problem: Fehlermeldung, dass das FormatConditions-Objekt nicht gefunden wird.
Problem: Das Ergebnis der Abfrage ist unerwartet.
Wenn Du die aktuelle Farbe einer Zelle ermitteln möchtest, gibt es alternative Ansätze:
FARBEN und WENN in Kombination verwenden, um die Ergebnisse zu analysieren.Hier sind einige Beispiele, wie Du die bedingte Formatierung in verschiedenen Szenarien nutzen kannst:
Sub EinfärbenNachBedingung()
Dim rng As Range
Set rng = Worksheets(1).Range("B1:D10")
For Each cell In rng
If cell.FormatConditions(1).Evaluate Then
cell.Interior.Color = RGB(255, 0, 0) ' Rot einfärben
End If
Next cell
End Sub
Sub EntfernenUndEinfärben()
Dim cell As Range
Set cell = Worksheets(1).Range("B1")
cell.FormatConditions.Delete
cell.Interior.Color = RGB(0, 255, 0) ' Grün einfärben
End Sub
Evaluate: Nutze die Evaluate-Methode, um komplexe Formeln zu überprüfen, ohne die Formatierungsbedingungen direkt auszulesen.Application.ScreenUpdating = False
' Dein Code hier
Application.ScreenUpdating = True
1. Frage: Kann ich die bedingte Formatierung auch in nicht-englischen Excel-Versionen abfragen? Antwort: Ja, Du musst jedoch sicherstellen, dass die Syntax und die Funktionen entsprechend der Sprache Deiner Excel-Version angepasst sind.
2. Frage: Funktioniert das auch in Excel 2013 und älteren Versionen? Antwort: Ja, die beschriebenen Methoden sind in den meisten Excel-Versionen ab 2010 anwendbar. Achte darauf, die VBA-Referenzen entsprechend zu überprüfen.