Arbeitsmappe prüfen, ob Autofilter aktiv ist
Schritt-für-Schritt-Anleitung
Um zu prüfen, ob in einer Excel-Arbeitsmappe ein Autofilter aktiv ist, kannst du das folgende VBA-Makro verwenden. Dieses Skript sucht in jedem Arbeitsblatt der Arbeitsmappe nach aktiven Filtern und gibt die Namen der betroffenen Blätter aus.
Sub Autofliter_Prüfen()
Dim i As Integer
Dim Wks As Worksheet
For Each Wks In Worksheets
If Wks.FilterMode Then
MsgBox "Filter aktiv: " & Wks.Name
End If
Next Wks
End Sub
Falls du das Skript anpassen möchtest, um auch die spezifischen Filterbedingungen anzuzeigen, kannst du das nachfolgende Makro verwenden:
Sub Autofilterinfo()
Dim wks As Worksheet
Dim objFilter As Filter, intF As Integer
Dim strMsg As String
On Error Resume Next
For Each wks In ActiveWorkbook.Worksheets
With wks
If .AutoFilterMode = True Then
If .FilterMode = True Then
strMsg = strMsg & vbLf & wks.Name
For intF = 1 To .AutoFilter.Filters.Count
Set objFilter = .AutoFilter.Filters(intF)
If objFilter.On Then
Select Case objFilter.Operator
Case xlOr
strMsg = strMsg & " - " & intF & ":" & objFilter.Criteria1
strMsg = strMsg & " ODER " & objFilter.Criteria2
Case xlAnd
strMsg = strMsg & " - " & intF & ":" & objFilter.Criteria1
strMsg = strMsg & " UND " & objFilter.Criteria2
Case 0 ' Einzelwert
strMsg = strMsg & " - " & intF & ":" & objFilter.Criteria1
Case Else
strMsg = strMsg & " - " & intF & ":" & "komplexer Filter"
End Select
End If
Next
End If
End If
End With
Next wks
If strMsg <> "" Then
MsgBox "Gesetzte Autofilter" & strMsg, vbOKOnly, "Autofilter prüfen"
Else
MsgBox "In der aktiven Datei sind keine Auto-Filter gesetzt", vbOKOnly, "Autofilter prüfen"
End If
End Sub
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode zur Prüfung, ob ein Autofilter gesetzt ist, wäre die Verwendung von Excel-Formeln oder die manuelle Überprüfung in der Menüleiste. Allerdings bietet VBA den Vorteil, dass du mehrere Blätter gleichzeitig überprüfen kannst, was insbesondere bei großen Arbeitsmappen von Vorteil ist.
Praktische Beispiele
-
Einfaches Makro zur Prüfung eines spezifischen Blatts:
Sub PrüfenAutofilterTabelle1()
Dim Wks As Worksheet
Set Wks = Worksheets("Tabelle1")
If Wks.AutoFilterMode = True Then
MsgBox "Autofilter aktiv auf Tabelle1"
Else
MsgBox "Kein Autofilter aktiv auf Tabelle1"
End If
End Sub
-
Überprüfung aller Tabellenblätter:
Verwende das erste Makro, um alle Blätter zu prüfen und eine Übersicht zu erhalten.
Tipps für Profis
- Nutze
On Error Resume Next, um Fehler während der Ausführung des Makros zu ignorieren, was die Robustheit erhöht.
- Wenn du mit Pivot-Tabellen arbeitest, musst du spezielle Methoden verwenden, um die Filter zu erkennen. Diese Filter sind nicht im Standard-Autofilter enthalten.
FAQ: Häufige Fragen
1. Wie kann ich prüfen, ob ein Autofilter in VBA gesetzt ist?
Du kannst dies mit der Eigenschaft AutoFilterMode der Worksheet-Objekte tun. Wenn True, ist der Autofilter aktiv.
2. Gibt es eine Möglichkeit, die Filterbedingungen anzuzeigen?
Ja, indem du die Filter-Collection durchgehst und die Criteria1 und Criteria2 der Filter abfragst, kannst du die aktiven Filterbedingungen anzeigen lassen. Nutze das zweite Makro als Beispiel.