AutoFilter-Objekt (Excel)
Stellt die automatische Filterung für das angegebene Arbeitsblatt dar.
Hinweis
Wenn AutoFilter mit Datumsangaben verwendet wird, sollte das Format mit englischen Datumstrennzeichen ("/") anstelle der lokalen Einstellungen (".") konsistent sein. Ein gültiges Datum wäre "2/2/2007", während "2.2.2007" ungültig ist.
Hinweis
Für das Arbeiten mit Objekten (z. B. dem Interior-Objekt ) muss ein Verweis auf ein Objekt hinzugefügt werden. Weitere Informationen zum Zuweisen eines Objektverweises zu einer Variablen oder Eigenschaft finden Sie in der Set-Anweisung .
Verwenden Sie die AutoFilter-Eigenschaft des Worksheet-Objekts , um das AutoFilter-Objekt zurückzugeben. Verwenden Sie die Filters -Eigenschaft, um eine Auflistung der einzelnen Spaltenfilter zurückzugeben. Verwenden Sie die Range -Eigenschaft, um das Range -Objekt zurückzugeben, das den gesamten gefilterten Bereich darstellt.
Im folgenden Beispiel werden die Adress- und Filterkriterien für die aktuelle Filterung gespeichert und dann 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
Um ein AutoFilter-Objekt für ein Arbeitsblatt zu erstellen, müssen Sie die automatische Filterung für einen Bereich auf dem Arbeitsblatt entweder manuell oder mithilfe der AutoFilter-Methode des Range-Objekts aktivieren. Im folgenden Beispiel werden die in Variablen auf Modulebene gespeicherten Werte des vorherigen Beispiels verwendet, um die ursprüngliche automatische Filterung für das Arbeitsblatt "Crew" wiederherzustellen.
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
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.