Autofilter in Excel VBA für Leere Zellen einrichten
Schritt-für-Schritt-Anleitung
Um den Autofilter in Excel VBA zu nutzen und dabei leere Zellen zu filtern, kannst du den folgenden Code verwenden. Dieser Code ermöglicht es dir, zwischen leeren und nicht leeren Zellen zu unterscheiden.
Private Sub Gesamt()
' Variablendeklaration
Dim intCounter As Integer
Dim shSource As Worksheet
Dim wb As Workbook
' Objektvariable für aktives Blatt festlegen
Set shSource = Sheets("Gesamt")
' Schleife über 16 TextBoxes
For intCounter = 1 To 16
' Wenn eine Auswahl erfolgte, dann
If Controls("cbbKriterium" & intCounter).ListIndex <> -1 Then
' Kriterium festlegen
Select Case Controls("cbbKriterium" & intCounter).Value
Case "(Alle)"
shSource.Range("A1").AutoFilter Field:=intCounter '(Alle) anzeigen
Case "(Leere)", ""
shSource.Range("A1").AutoFilter Field:=intCounter, Criteria1:="=" '(Leere) filtern
Case "(NichtLeere)"
shSource.Range("A1").AutoFilter Field:=intCounter, Criteria1:="<>"
Case Else
shSource.Range("A1").AutoFilter Field:=intCounter, _
Criteria1:=Controls("cbbKriterium" & intCounter).Value
End Select
End If
Next intCounter
' Alle sichtbaren Zellen kopieren
shSource.Range("A1").CurrentRegion.Copy
' Neues Arbeitsblatt hinzufügen
Worksheets.Add after:=Worksheets(Worksheets.Count).Paste
' Autofilter ausschalten
shSource.Range("A1").AutoFilter
Application.CutCopyMode = False
Unload Me
End Sub
Häufige Fehler und Lösungen
-
Fehler: Der Filter zeigt keine leeren Zellen an.
Lösung: Stelle sicher, dass du die Kriterien in deiner Combobox korrekt definiert hast, insbesondere für die leeren Zellen. Der Code sollte Criteria1:="=" für leere Zellen verwenden.
-
Fehler: Der Autofilter funktioniert nicht wie erwartet.
Lösung: Überprüfe, ob das Arbeitsblatt, auf das du zugreifst, tatsächlich Daten enthält und der Autofilter aktiviert ist.
Alternative Methoden
Wenn du nicht mit VBA arbeiten möchtest, kannst du auch die Excel Filter Funktion direkt verwenden:
- Wähle den Bereich aus, den du filtern möchtest.
- Gehe zu „Daten“ > „Filtern“.
- Klicke auf den Dropdown-Pfeil der Spalte, die du filtern möchtest.
- Wähle „Leere Zellen“ oder „Nicht leere Zellen“ aus.
Diese Methode ist besonders nützlich, wenn du nicht mit Makros arbeiten möchtest.
Praktische Beispiele
Hier sind einige praktische Beispiele, wie du den Autofilter in VBA verwenden kannst:
-
Leere Zellen filtern:
shSource.Range("A1").AutoFilter Field:=1, Criteria1:="="
-
Nicht leere Zellen filtern:
shSource.Range("A1").AutoFilter Field:=1, Criteria1:="<>"
Diese einfachen Zeilen können in deinen VBA-Code integriert werden, um die Filterung von leeren und nicht leeren Zellen zu erleichtern.
Tipps für Profis
-
Nutze das AutoFilterMode-Attribut, um schnell zu überprüfen, ob der Autofilter aktiv ist:
If Not shSource.AutoFilterMode Then
shSource.Range("A1").AutoFilter
End If
-
Kombiniere mehrere Filterkriterien, um komplexere Datenanalysen durchzuführen. Dies kann durch die Verwendung von Criteria1 und Criteria2 erfolgen.
FAQ: Häufige Fragen
1. Kann ich den Autofilter auch auf mehrere Spalten anwenden?
Ja, du kannst den Autofilter auf mehrere Spalten anwenden, indem du für jede Spalte entsprechende Filterkriterien festlegst.
2. Wie filtere ich nach leeren Zellen in einer bestimmten Spalte?
Verwende den Befehl AutoFilter mit Criteria1:="=" für die gewünschte Spalte, um nur die leeren Zellen anzuzeigen.
3. Funktioniert dieser Code in allen Excel-Versionen?
Der VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, einschließlich Excel 2010 und höher.