Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Fragen zur bedingten Formatierung per VBA (Index/Bereich)

Forumthread: Fragen zur bedingten Formatierung per VBA (Index/Bereich)

Fragen zur bedingten Formatierung per VBA (Index/Bereich)
06.11.2025 08:28:20
StefanK
Einen schönen guten Morgen zusammen,

in meiner Tabelle wende ich die bedingte Formatierung in verschiedenen Spalten an. Da es vorkommen kann, dass Zeilen gelöscht werden und die Ganze Zuordnung der Formatierung dann zerrupft wird, habe ich mir einen Code geschrieben, der die Formatierung beim Start der Datei (und bei Bedarf per Button) für alle Bereiche neu setzt.

Z.B. mit:
' +++++ Status +++++
With ThisWorkbook.ActiveSheet.Range("$P20:$P500").FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Offen""")
.Interior.Color = RGB(255, 199, 206)
.Font.Color = RGB(156, 0, 0)
.StopIfTrue = False
End With
... usw... (das gleiche noch für eine Spalte "Priorität")

Wie kann ich eine bedingte Formatierung mir Ihrer Nummer (Index ?) ansprechen ? Ich möchte z.B. nicht die komplette Formatierung neu setzen, sondern nur die Range, auf die sich die Formatierung bezieht (das soll irgendwie mit ".FormatConditions(1).Modify" gehen. Wie kann ich das machen ? Hat jeder Bereich seine eigene fortlaufende Nummer (Index), oder zählt Excel die einfach der Reihe nach.

Vielen Dank für Eure Unterstützung.
VG Stefan
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fragen zur bedingten Formatierung per VBA (Index/Bereich)
06.11.2025 09:41:18
MCO
Moin!

Du kannst die bed. Formatierung in ihrer Reihenfolge mit INDEX 1 beginnend ansprechen.
Ich hab mal versucht nur die Range zu lesen (geht) und zu schreiben (geht nicht!)

Sub formatcond_test()


With ActiveWorkbook.Sheets(ActiveSheet.index)
MsgBox .Cells.FormatConditions(1).AppliesTo.Address
.Cells.FormatConditions(1).AppliesTo = Range("C6:C38") 'geht nicht
End With
End Sub


Daher kann dir nur raten, die bedingte Formatierung zu löschen und komplett neu zu setzen.
Sub formatcond_test()


With ThisWorkbook.ActiveSheet
.FormatConditions(1).Delete

Set n_FC = .Range("$P20:$P500").FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Offen""")
With n_FC
.Interior.Color = RGB(255, 199, 206)
.Font.Color = RGB(156, 0, 0)
.StopIfTrue = False
.Priority = 1 'an erste Stelle setzen
End With
End With
End Sub


Gruß, MCO
Anzeige
AW: Fragen zur bedingten Formatierung per VBA (Index/Bereich)
06.11.2025 09:56:33
StefanK
Moin MCO,
vielen Dank für Deine Rückmeldung. OK, dann weiß ich jetzt wenigstens, wie ich die Bereiche auslesen kann. Schade, dass das Zuweisen nicht geht. Aber dann mache ich das so, wie Du geschrieben hast, bei Bedarf alle neu schreiben. Und es scheint ja so zu sein, dass die Indexe der Formatierungen fortlaufend sind und nicht auf die jeweiligen Bereiche bezogen sind 👍🏻 Das bringt mich auch schon mal ein wenig weiter...

Herzlichen Dank und viele Grüße
Stefan
Anzeige
AW: Fragen zur bedingten Formatierung per VBA (Index/Bereich)
06.11.2025 12:21:53
Onur
z.B. so:
Sub Makro1()

Dim letzteZeile As Long
letzteZeile = Cells(Rows.Count, "A").End(xlUp).Row
Range("A2").FormatConditions(1).ModifyAppliesToRange Range:=Range("A2").Resize(letzteZeile - 1, 6)
End Sub


oder so:
Worksheets(1).Range("e1:e10").FormatConditions(1).Modify xlCellValue, xlLess, "=$a$1"


Guckst du hier:

https://learn.microsoft.com/de-de/office/vba/api/excel.formatcondition.modify
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige