Clever-Excel-Forum

Normale Version: Autofilter beim Beenden löschen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo ich möchte das wenn ich die Liste beende, automatisch die Filter gelöscht werden.
Ich habe zwar einen VBA Code aber der geht nicht.
Wer kann mir da weiterhelfen.

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.AutoFilterMode Then
            ws.AutoFilterMode = False
        End If
    Next ws
End Sub
Die Mappe muss auf jeden Fall noch gespeichert werden, nachdem die Filter zurückgesetzt wurden.
Ja das ist ja mein Problem.
Wenn ich die Mappe speichere sollen die Filter zurückgesetzt werden.
Oder ist es besser wenn man die Mappe öffnet, das die Filter zurückgesetzt werden.
Da habe ich diesen Code gefunden.
Aber der geht auch nicht
Code:
Private Sub Workbook_Open()
'Updated by Extendoffice 20221012
    Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.AutoFilterMode Then
            ws.ShowAllData
        End If
    Next ws
End Sub
Hallo Franke,

Du machst die falsche Vba-Prüfung, denn im vorhandenen Tabellenblatt verwendest Du nicht das AutoFilter-Objekt des Arbeitsblattes, sondern das FilterObjekt der Intelligenten Tabelle 'Tabelle15': also
ws.ListObjects("Tabelle15").AutoFilter.FilterMode

Gruß von Luschi
aus klein-Paris
Könnt ihr mir noch mal helfen.

Bekomme eine Fehlermeldung.
Was muss ich noch ändern.
Zeigt mir ws.ShowAllData als Fehler an.

Code:
Private Sub Workbook_Open()

'Filter in einer Intelegenten Tabelle beim beenden rücksetzen
    Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.ListObjects("Tabelle15").AutoFilter.FilterMode Then
          ws.ShowAllData
        End If
    Next ws
End Sub
Hi,

habe es nicht getestet, aber der Logik nach willst du ja den Autofilter des Listobjekts ausschalten. Also solltest du das auch tun:

Code:
If ws.ListObjects("Tabelle15").AutoFilter.FilterMode Then
          ws.ListObjects("Tabelle15").ShowAllData
Moin!
Bei mir funktioniert der kopierte Code von Franke in seiner Datei problemlos.

Gruß Ralf
Moin,

wahrscheinlich heißt das Listobjekt nicht auf jedem Blatt gleich.

Viele Grüße
derhoepp
Hallo Manfred,

Code:
Private Sub Workbook_Open()
  Dim ws As Worksheet
  Dim oListe As ListObject
  For Each ws In Worksheets
    For Each oListe In ws.ListObjects
      If oListe.AutoFilter.FilterMode Then
        oListe.AutoFilter.ShowAllData
      End If
    Next oListe
  Next ws
End Sub

Gruß, Uwe
Vielen besten Dank für eure Lösungen.
Nun funktioniert es .