Ich habe zum Beispiel auf der Spalte "D" einen Filter gesetzt. Nun möchte ich per VBA jede einzelne gefilterte Zeile durchlaufen und eine entsprechende Prüfung vornehmen. Wie kann ich einen gefilterten Bereich durchlaufen?
Vielen Dank
Christian
Sub Filterbereich()
Dim c As Range, z As Range
Set c = Range("D1:D50").SpecialCells(xlCellTypeVisible)
For Each z In c
MsgBox z.Address
Next z
End Sub
Sub Filterbereich()
Dim c As Range
For Each c In Range("D1:D50")
If c.RowHeight > 0 Then
'Deine Prüfung
End If
Next c
End Sub
Um einen gefilterten Bereich in Excel durchzulaufen, kannst Du die SpecialCells-Methode in VBA verwenden. Folge diesen Schritten:
Öffne Deine Excel-Datei und drücke Alt + F11, um den VBA-Editor zu öffnen.
Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" wählst.
Kopiere den folgenden Code in das Modul:
Sub Filterbereich()
Dim c As Range, z As Range
Set c = Range("D1:D50").SpecialCells(xlCellTypeVisible)
For Each z In c
MsgBox z.Address
Next z
End Sub
Schließe den VBA-Editor und kehre zu Excel zurück.
Führe das Makro aus, indem Du Alt + F8 drückst und das Makro "Filterbereich" auswählst.
Mit diesem Code durchläufst Du jede sichtbare (gefilterte) Zelle in der Spalte D und erhältst die Adresse der Zelle in einer Meldung.
Fehler: "No cells were found"
Problem mit der Zeilenhöhe
Sub FilterbereichMitPruefung()
Dim c As Range
For Each c In Range("D1:D50")
If c.RowHeight > 0 Then
' Deine Prüfung hier
End If
Next c
End Sub
Eine weitere Methode, um den Excel-Filterbereich zu erweitern oder zu ändern, ist die Verwendung von AutoFilter-Methoden. Du kannst den Filterbereich dynamisch anpassen, indem Du den AutoFilter anwendest:
Sub FilterbereichErweitern()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("DeinBlattname")
ws.Range("D1:D50").AutoFilter Field:=1, Criteria1:="DeinKriterium"
End Sub
Diese Methode ermöglicht es Dir, gezielt nach bestimmten Kriterien zu filtern und anschließend den gefilterten Bereich zu durchlaufen.
Hier sind einige praktische Beispiele, wie Du den gefilterten Bereich in Excel nutzen kannst:
Zählen der gefilterten Zellen:
Sub ZaehleGefilterte()
Dim c As Range
Dim zaehler As Long
zaehler = 0
Set c = Range("D1:D50").SpecialCells(xlCellTypeVisible)
For Each z In c
zaehler = zaehler + 1
Next z
MsgBox "Anzahl der gefilterten Zellen: " & zaehler
End Sub
Werte in gefilterten Zellen summieren:
Sub SummeGefilterte()
Dim c As Range
Dim summe As Double
summe = 0
Set c = Range("D1:D50").SpecialCells(xlCellTypeVisible)
For Each z In c
summe = summe + z.Value
Next z
MsgBox "Summe der gefilterten Werte: " & summe
End Sub
Verwendung von Application.ScreenUpdating: Um die Leistung zu verbessern, kannst Du die Bildschirmaktualisierung während der Ausführung Deines Makros deaktivieren:
Application.ScreenUpdating = False
' Dein Code hier
Application.ScreenUpdating = True
Maximale Zeilenhöhe erweitern: Wenn Du sicherstellen möchtest, dass die Zeilenhöhe für bestimmte Bedingungen angepasst wird, kannst Du dies direkt im Code einfügen:
If c.RowHeight < 15 Then c.RowHeight = 15 ' Beispiel für minimale Höhe
1. Wie kann ich den Excel-Filterbereich ändern?
Um den Excel-Filterbereich zu ändern, kannst Du die AutoFilter-Methode verwenden und die Kriterien anpassen.
2. Was passiert, wenn keine Zellen gefiltert sind?
Wenn keine Zellen gefiltert sind, gibt es keine sichtbaren Zellen, und die SpecialCells-Methode wird einen Fehler auslösen. Stelle sicher, dass der Filter aktiv ist.