Autofilter per Makro setzen in Excel
Schritt-für-Schritt-Anleitung
Um den Excel VBA Autofilter per Makro zu setzen, kannst du folgende Schritte befolgen:
-
Öffne deine Excel-Datei und aktiviere den VBA-Editor mit ALT + F11
.
-
Klicke auf Einfügen
> Modul
, um ein neues Modul zu erstellen.
-
Füge den folgenden VBA-Code ein:
Sub Autofilter()
Dim AktiveZeile2 As Integer
Dim Ende As Integer
Dim Datum As String
AktiveZeile2 = ActiveCell.Row
Ende = Application.Worksheets("Umsätze").Range("A65536").End(xlUp).Row
With Worksheets("Umsätze")
If .AutoFilterMode Then
Rows("4:4").Select
Selection.AutoFilter
Range("A4", Cells(Ende, 33)).Select
Selection.AutoFilter
Else
Range("A4", Cells(Ende, 33)).Select
Selection.AutoFilter
End If
End With
Cells(AktiveZeile2, 3).Select
Datum = Cells(AktiveZeile2, 3)
Selection.AutoFilter Field:=3, Criteria1:=Datum, Operator:=xlAnd
Range("A7").Select
End Sub
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
Führe das Makro über Entwicklertools
> Makros
aus.
Häufige Fehler und Lösungen
-
Fehler: Leere Zeilen nach dem Zurücksetzen des Filters
Mögliche Ursache ist die Verwendung von Selection
. Stattdessen solltest du die Cells oder Range-Objekte verwenden, um sicherzustellen, dass der Filter auf die richtige Tabelle angewendet wird.
-
Lösung: Verwende den folgenden Code, um den Filter zu setzen:
Sub Filter()
Cells.AutoFilter field:=8, Criteria1:="12.04.2005"
End Sub
-
Fehler: Autofilter wird nicht korrekt aktiviert
Stelle sicher, dass du den AutoFilterMode korrekt überprüfst. Hier ein Beispiel:
If Not .AutoFilterMode Then
.Range("A4").AutoFilter
End If
Alternative Methoden
Eine alternative Methode, um den Excel VBA Autofilter zu setzen, ist die Verwendung der AutoFilter
-Methode direkt auf einem Bereich. Hier ist ein einfaches Beispiel:
Sub AlternativeFilter()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Umsätze")
ws.Range("A4:Z100").AutoFilter Field:=3, Criteria1:="12.04.2005"
End Sub
Diese Methode ist nützlich, wenn du eine bestimmte Range angeben möchtest, anstatt die gesamte Tabelle zu filtern.
Praktische Beispiele
Hier sind einige praktische Beispiele für das Setzen von Filtern in Excel mit VBA:
-
Filtern nach Datum:
Sub FilterByDate()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Umsätze")
ws.Range("A4:Z100").AutoFilter Field:=3, Criteria1:=">=01.01.2022", Operator:=xlAnd
End Sub
-
Filtern nach mehreren Kriterien:
Sub MultiCriteriaFilter()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Umsätze")
ws.Range("A4:Z100").AutoFilter Field:=8, Criteria1:=Array("12.04.2005", "15.05.2005"), Operator:=xlFilterValues
End Sub
Tipps für Profis
-
Verwende AutoFilterMode
: Überprüfe den AutoFilterMode
, um zu bestimmen, ob ein Filter bereits aktiv ist, bevor du einen neuen Filter setzt. Dies kann helfen, Fehler zu vermeiden.
-
Vermeide Selection
: Arbeite stattdessen mit Cells
oder Range
, um präzise und fehlerfreie Filter zu setzen.
-
Dokumentiere deinen Code: Füge Kommentare hinzu, um die Funktionsweise deines Codes zu erklären. Dies hilft dir und anderen, den Code später besser zu verstehen.
FAQ: Häufige Fragen
1. Wie setze ich den Autofilter für mehrere Spalten?
Du kannst mehrere Filter gleichzeitig setzen, indem du die AutoFilter
-Methode für jede Spalte aufrufst.
2. Was mache ich, wenn der Filter nicht funktioniert?
Überprüfe, ob die Daten korrekt formatiert sind und ob der Autofilter auf den richtigen Bereich angewendet wird.
3. Wie kann ich den Autofilter zurücksetzen?
Verwende Cells.AutoFilter
, um alle Filter zurückzusetzen:
Sub ResetFilter()
Cells.AutoFilter
End Sub