Autofilter beim Beenden löschen
#1
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


Angehängte Dateien
.xlsm   Test ÄM Liste.xlsm (Größe: 18,23 KB / Downloads: 2)
Antworten Top
#2
Die Mappe muss auf jeden Fall noch gespeichert werden, nachdem die Filter zurückgesetzt wurden.
Antworten Top
#3
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


Angehängte Dateien
.xlsm   Test ÄM Liste.xlsm (Größe: 17 KB / Downloads: 4)
Antworten Top
#4
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
Antworten Top
#5
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
Antworten Top
#6
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
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#7
Moin!
Bei mir funktioniert der kopierte Code von Franke in seiner Datei problemlos.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
Moin,

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

Viele Grüße
derhoepp
Antworten Top
#9
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
Antworten Top
#10
Vielen besten Dank für eure Lösungen.
Nun funktioniert es .
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste