Auf Englisch lesen

Freigeben über


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 .

Beispiel

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 

Methoden

Eigenschaften

Siehe auch

Support und Feedback

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.