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

Forumthread: Arbeitsmappe prüfen, ob Autofilter aktiv ist

Arbeitsmappe prüfen, ob Autofilter aktiv ist
02.11.2016 15:33:33
Rico
Hallo und guten Tag zusammen!
Zunächst einmal vielen Dank an alle, die hier so fleißig sind und Hilfestellung geben!
Bestimmt gibt es für meine Frage auch eine Lösung. Ich suche nach einer Möglichkeit, eine Arbeitsmappe darauf zu prüfen, ob in einen der enthaltenen Tabellenblätter ein Autofilter aktiv ist oder nicht.
Wie man in einem Tabellenblatt nach einem aktiven Autofilter sucht, habe ich dank des Forums herausgefunden:
Sub Autofliter_Prüfen()
Dim i As Integer
Dim Wks As Worksheet
Set Wks = Worksheets("Tabelle1")
If Wks.AutoFilterMode = True Then
For i = 1 To Wks.AutoFilter.Filters.Count
If Wks.AutoFilter.Filters(i).On Then
MsgBox ("Autofilter aktiv")
End If
Next i
End If
End Sub
Ich brauche jedoch eine Lösung, wo die gesamte Arbeitsmappe durchsucht und eine entsprechende Meldung ausgeben wird. Ideal wäre natürlich, wenn die Mitteilung erfolgt, ob ein Autofilter aktiv ist oder ob kein Autofilter aktiv ist. Die Krönung wäre allerdings, wenn bei aktivem Autofilter das betroffene Tabellenblatt benannt wird…
Hat jemand einen hilfreichen Tipp für mich, egal ob mit oder ohne Krönung?
Ich bedanke mich im Voraus!
Rico
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitsmappe prüfen, ob Autofilter aktiv ist
02.11.2016 16:10:23
Rudi
Hallo,
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
Gruß
Rudi
AW: Arbeitsmappe prüfen, ob Autofilter aktiv ist
02.11.2016 16:17:04
Rico
Hallo Rudi,
das ist perfekt! Vielen Dank dafür!
Gruß Rico
Anzeige
AW: Zusatzfrage
02.11.2016 16:55:32
Gerhard
Hallo Rudi,
gibt es dazu evtl. die Zusatzinfo nach welchem Wert in den Blättern gefiltert wird?
Gruß
Gerhard
AW: Autofilter gesetzte Filter (einfache)
03.11.2016 06:19:16
fcs
Hallo Gerhard,
für die einfachen Filter geht es so:
Sub Autofilterinfo()
Dim wks As Worksheet
Dim objFilter As Filter, intF As Integer
Dim strMsg
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
Gruß
Franz
Anzeige
AW: Autofilter gesetzte Filter (einfache)
03.11.2016 07:22:23
Rico
Hallo Franz,
von mir vielen Dank für deine Lösung! Beim Testen ist mir folgendes aufgefallen: Das Makro erkennt "normal gefilterte" Werte problemlos. Sobald aber die Daten als Tabelle formatiert sind, wird der Filter nicht erkannt. Das Gleiche gilt für gefilterte Pivot-Tabellen. Nur so als Hinweis.
Danke und Gruß
Rico
Anzeige
Klar; eine gefilterte Tabelle <> TBlatt-Filter...
03.11.2016 11:08:37
Michael
Rico,
...deswegen hat Franz ja auch geschrieben "...für die einfachen Filter...".
Eine formatierte Tabelle (Datentabelle) ist ein eigenes Objekt auf dem Tabellenblatt (Listobject), die dortigen gesetzten Filter müssten separat ausgelesen werden.
LG
Michael
AW: Klar; eine gefilterte Tabelle <> TBlatt-Filter...
03.11.2016 12:10:18
Rico
Hallo Michael,
danke für den Hinweis!
Gruß Rico
Anzeige
AW: Danke
03.11.2016 16:39:27
Gerhard
Vielen Dank Franz, das leistet mir gute Hilfe.
Gruß
Gerhard
Anzeige
Anzeige

Infobox / Tutorial

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

  • Fehler: Kein Filter erkannt

    • Mögliche Ursache: Der Autofilter ist nicht aktiv oder die Daten sind als Tabelle formatiert. Stelle sicher, dass der Autofilter aktiv ist und teste das Makro in einer normalen Datenliste, nicht in einer formatierten Tabelle.
  • Fehler: Meldung wird nicht angezeigt

    • Mögliche Ursache: Das Makro könnte in einem Blatt ohne Autofilter ausgeführt werden. Prüfe, ob in anderen Blättern Filter gesetzt sind.

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

  1. 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
  2. Ü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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige