Stellt die automatische Filterung für das angegebene Tabellenblatt dar.
Verwenden des AutoFilter-Objekts
Verwenden Sie die AutoFilter-Eigenschaft, um das AutoFilterObjekt zurückzugeben. Verwenden Sie die Filters-Methode, um eine Auflistung der einzelnen Spaltenfilter zurückzugeben. Verwenden Sie die Range-Methode, um das Range-Objekt zurückzugeben, das den gesamten gefilterten Bereich darstellt. Im folgenden Beispiel werden die Adresse und Filterkriterien für die aktuelle Filterung gespeichert und anschließend neue Filter angewendet.
Dim w As Worksheet Dim filterArray() Dim currentFiltRange As String Sub ChangeFilters() Set w = Worksheets("Crew") With w.AutoFilter currentFiltRange = .Range.Address With .Filters ReDim filterArray(1 To .Count, 1 To 3) For f = 1 To .Count With .Item(f) If .On Then filterArray(f, 1) = .Criteria1 If .Operator Then filterArray(f, 2) = .Operator filterArray(f, 3) = .Criteria2 End If End If End With Next End With End With w.AutoFilterMode = False w.Range("A1").AutoFilter field:=1, Criteria1:="S" End Sub
Zum Erstellen eines AutoFilter-Objekts für ein Tabellenblatt, müssen Sie die automatische Filterung für einen Bereich in dem Tabellenblatt entweder manuell oder mit Hilfe der AutoFilter-Methode des Range-Objekts aktivieren. Das folgende Beispiel verwendet die in Variablen auf Modulebene gespeicherten Werte des vorherigen Beispiels, um die ursprüngliche automatische Filterung für das Tabellenblatt "Crew" wieder herzustellen.
Sub RestoreFilters() Set w = Worksheets("Crew") w.AutoFilterMode = False For col = 1 To UBound(filterArray(), 1) If Not IsEmpty(filterArray(col, 1)) Then If filterArray(col, 2) Then w.Range(currentFiltRange).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1), _ Operator:=filterArray(col, 2), _ Criteria2:=filterArray(col, 3) Else w.Range(currentFiltRange).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1) End If End If Next End Sub