Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Gefilterter Bereich durchlaufen

Forumthread: Gefilterter Bereich durchlaufen

Gefilterter Bereich durchlaufen
10.11.2005 12:28:15
Christian
Guten Tag
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
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gefilterter Bereich durchlaufen
10.11.2005 12:36:37
Dr.
Hi,
indem Du die SpecialCells-Methode mit dem Parameter xlCellTypeVisible anwendest.
AW: Gefilterter Bereich durchlaufen
10.11.2005 12:46:37
Christian
Vielen Dank für Deine Hilfe.
Hast Du mir bitte noch ein kleines Code-Beispiel?
Christian
AW: Gefilterter Bereich durchlaufen
10.11.2005 13:00:45
Heinz
Hallo Christian,
so z.B.:

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

Gruß
Heinz
Anzeige
AW: Gefilterter Bereich durchlaufen
10.11.2005 13:15:32
Christian
Hallo Heinz
Super, vielen Dank.
Christian
AW: Gefilterter Bereich durchlaufen
10.11.2005 12:38:16
Worti
Hallo christian,
nicht gefilterte Zeilen bekommen die Zeilenhöhe 0, deshalb kann man es so machen:


      
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
 


Gruß Worti
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Gefilterten Bereich durchlaufen in Excel


Schritt-für-Schritt-Anleitung

Um einen gefilterten Bereich in Excel durchzulaufen, kannst Du die SpecialCells-Methode in VBA verwenden. Folge diesen Schritten:

  1. Öffne Deine Excel-Datei und drücke Alt + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" wählst.

  3. 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
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. 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.


Häufige Fehler und Lösungen

  • Fehler: "No cells were found"

    • Dieser Fehler tritt auf, wenn der Filter keine sichtbaren Zellen hat. Stelle sicher, dass Du einen gültigen Filter auf die Spalte D gesetzt hast.
  • Problem mit der Zeilenhöhe

    • Nicht gefilterte Zeilen haben automatisch eine Zeilenhöhe von 0. Wenn Du alle Zellen durchlaufen möchtest, ohne nur die Sichtbaren zu berücksichtigen, kannst Du die Zeilenhöhe überprüfen:
    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

Alternative Methoden

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.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du den gefilterten Bereich in Excel nutzen kannst:

  1. 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
  2. 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

Tipps für Profis

  • 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

FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige