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

Forumthread: Anzahl bedingter Formatierungen auslesen

Anzahl bedingter Formatierungen auslesen
07.10.2020 10:35:35
Jürgen
Hallo,
ich habe eine größere Tabelle mit ca. 60 Spalten und 5000 Datensätzen/ Zeilen. Mittels VBA habe ich auf bestimmte Felder diverse Validierungsregeln gemacht, die die Funktion bedingte Formatierung von Excel verwendet.
Dazu habe ich 2 Fragen:
1. Kann ich die Anzahl der Felder, die durch die bedingte Formatierung markiert werden auslesen und ausgeben? Wenn ja wie?
2. Wie kann ich in VBA einzelne Validierungen an und ausschalten, gesteuert über das Tabellenblatt. Beispielsweise steht auf dem Tabellenblatt der Name und dahinter ist dann einfach ein Ja/Nein Feld mit dem ich steuern könnte, ob die Validierung durchlaufen wird oder nicht.
Ausschnitte aus dem Makro sehen so aus. Wenn das Makro ausgeführt wird werden zunächst alle _ bedingten Formatierungen gelöscht. Danach die einzelnen Validierungsregeln durchlaufen.

Sub ValidationRules()
' Delete all conditional formats on sheet Validation Sheet
Sheets("Validation Sheet").Cells.FormatConditions.Delete
' Switch to Validation Sheet
Sheets("C14.00 Validation Sheet").Select
' Validation Rule
' v7366
Range("ae3:ae5000").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=AND(ae3"""";ah3ad3+ae3)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
' Validation Rule
' v7675
Range("F3:F5000").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ISNA(MATCH(F3;LookupTables!$C$7:$C$9;0))"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub

Hat jemand eine Idee und kann mir helfen?
Danke und viele Grüße
Jürgen
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Crosspost ohne Hinweis
07.10.2020 10:38:12
Werner
Hallo,
wie wäre es, wenn du die Beiträge in den verschiedenen Foren untereinander verlinkst?
Gruß Werner
AW: Anzahl bedingter Formatierungen auslesen
07.10.2020 11:25:45
Yal
Hallo Jürgen,
fraglich ist, welche Ziel Du mit diesen bedingten Formatierung verfolgst?
Wäre es nicht sinnvoller, ein Filter einzusetzen? Bei Bedarf mit einer Hilfspalte.
In einer weiteren Spalte kommt diese Ja/Nein rein und kann auch mitgefiltert werden.
VG
Yal
AW: Anzahl bedingter Formatierungen auslesen
07.10.2020 11:39:50
Jürgen
Hi Yal,
mit der bedingten Formatierung markiere ich die Validierungsfehler im Tabellenblatt bzw. die Felder in denen der Fehler auftritt. Es sind ca. 80 Regeln, die ich so aufgesetzt habe. zusätzlich würde ich eben gerne die Anzahl der Fehler pro Regel berechnen und ausgeben und zusätzlich die Möglichkeit Regeln an und auszuschalten.
Viele Grüße
Jürgen
Anzeige
AW: Anzahl bedingter Formatierungen auslesen
07.10.2020 11:49:59
Yal
dann 80 Hilfespalten... Die kann man anschliesend leichter löschen als bedingte Formatierungen. Mit VBA bringst Du oft deine Daten in einem schwer umkehrbaren Zustand.
Beim Filter sieht man sofort wieviel Datensätze selektiert worden sind.
Notfalls kann man auch komplexe Auswertung Mithilfe Pivottabelle machen.
VG Yal
Anzeige
AW: Anzahl bedingter Formatierungen auslesen
07.10.2020 12:06:32
Jürgen
ok Danke für die Rückmeldung. Die Hilfsspalten wären eine Möglichkeit. Aber hast Du auch eine Idee wie ich die beiden Punkte in vba lösen kann?
VG
Jürgen
AW: Anzahl bedingter Formatierungen auslesen
07.10.2020 13:49:17
Yal
da müsste ich mich reinarbeiten: wie ist der Datenmodell, worauf kann man greifen, usw....
Im Einzelschritt-Modus die Objekte im Lokalfenster anschauen.
Der Makro Recorder sagt mir, dass das Selektieren der Zellen mit bedingten Formatierung wie folgt lautet:
ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions).Select

Dann würde ich zuerst diese Zellen durchlaufen und der Format im Direktfenster rausgeben.
Da das Objekt FormatConditions an das Auflistungsobjekt Cells angehängt ist, vielleicht lieber
For Each FC in ActiveSheet.FormatConditions
Debug.Print FC.AppliesTo
Next
usw.
Viel Erfolg
Yal
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Anzahl bedingter Formatierungen auslesen in Excel


Schritt-für-Schritt-Anleitung

Um die Anzahl der bedingten Formatierungen in Excel mit VBA auszulesen, kannst du das folgende Makro verwenden. Dieses Makro durchläuft alle Formatierungsregeln auf dem aktiven Arbeitsblatt und gibt die Anzahl der Zellen aus, die die bedingte Formatierung anwenden:

Sub CountConditionalFormats()
    Dim fc As FormatCondition
    Dim count As Long
    count = 0

    For Each fc In ActiveSheet.FormatConditions
        count = count + fc.AppliesTo.Cells.Count
    Next fc

    MsgBox "Anzahl der bedingten Formatierungen: " & count
End Sub

Die obige Methode ist einfach und effektiv, um die Anzahl der bedingten Formatierungen auszulesen.


Häufige Fehler und Lösungen

Fehler: "Runtime error 1004"

  • Dies kann auftreten, wenn das Arbeitsblatt keine bedingten Formatierungen hat. Stelle sicher, dass das aktive Blatt mindestens eine bedingte Formatierung hat, bevor du das Makro ausführst.

Lösung:

  • Überprüfe zuerst, ob das aktive Blatt bedingte Formatierungen enthält. Füge eine entsprechende Fehlermeldung in das Makro ein.

Alternative Methoden

Neben der Verwendung von VBA kannst du auch Excel-Funktionen nutzen, um die Daten zu filtern. Eine Hilfsspalte mit einer Ja/Nein-Logik kann helfen, die Zellen zu identifizieren, die durch die bedingte Formatierung markiert sind.

Beispiel:

  1. Erstelle eine neue Spalte neben deinen Daten.
  2. Verwende die Formel =WENN(A1="Fehler";"Ja";"Nein"), um zu markieren, wenn ein Fehler vorliegt.
  3. Filtere diese Spalte, um nur die fehlerhaften Daten anzuzeigen.

Praktische Beispiele

Hier ist ein Beispiel für ein Makro, das sowohl die Anzahl der bedingten Formatierungen ausliest als auch die Möglichkeit bietet, Regeln basierend auf einer Ja/Nein-Spalte zu aktivieren oder zu deaktivieren:

Sub ControlConditionalFormats()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Validation Sheet")

    Dim cell As Range
    For Each cell In ws.Range("B3:B5000") ' Angenommene Hilfsspalte
        If cell.Value = "Ja" Then
            ' Hier kann die Logik für die bedingten Formatierungen hinzugefügt werden
        End If
    Next cell
End Sub

In diesem Beispiel wird die bedingte Formatierung nur angewendet, wenn in der Hilfsspalte "Ja" steht.


Tipps für Profis

  • Nutze den Makro-Rekorder, um dir eine Basis für dein VBA-Skript zu erstellen. Dies kann dir helfen, die spezifischen Befehle zu verstehen, die du benötigst.
  • Experimentiere mit SpecialCells in VBA, um gezielt nur die Zellen mit bedingten Formatierungen auszuwählen:
ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions).Select
  • Überlege, ob die Verwendung von Pivot-Tabellen dir nicht eine bessere Übersicht über Fehler und Validierungen in deinen Daten bieten kann.

FAQ: Häufige Fragen

1. Kann ich bedingte Formatierungen auch in mehreren Blättern auslesen? Ja, du kannst eine Schleife verwenden, um über alle Arbeitsblätter in der Arbeitsmappe zu iterieren.

2. Gibt es eine Möglichkeit, bedingte Formatierungen anhand von Zellwerten zu aktivieren? Ja, durch die Verwendung von VBA kannst du Bedingungen festlegen, die auf Zellwerten basieren, um die bedingte Formatierung dynamisch anzupassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige