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

Forumthread: Erste sichtbare Zeile im Filterbereich?

Erste sichtbare Zeile im Filterbereich?
02.10.2004 12:38:56
Frank
Hallo Leute,
wie kann ich in einem gefilterten Bereich die Zeilennummern der ersten
sichtbaren und der letzten sichtbaren Zeile ermitteln?
Grüße Frank
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erste sichtbare Zeile im Filterbereich?
02.10.2004 13:09:27
Nepumuk
Hallo Frank,
die letzte Zeile ist kein Problem: Worksheets(1).Cells(1, 1).End(xlDown).Row
(Sofern der Filter in Zeile 1 sitzt.) Die erste Zeile kannst du ermitteln, inden du in einer Schleife die Hidden - Eigenschaft der Zeile abfrägst. Die erste sichtbare ist deine Zeile.
Gruß
Nepumuk
Anzeige
AW: Erste sichtbare Zeile im Filterbereich?
Frank
Hallo Nepumuk,
der Filterbereich beginnt in Zeile 3(Überschriften). Wie müßte denn da ein Makro aussehen? Hab leider kaum Ahnung von VBA.
Gruß Frank
AW: Erste sichtbare Zeile im Filterbereich?
02.10.2004 13:35:07
Nepumuk
Hallo Frank,
so würde es aussehen:


Public Sub Frank()
    Dim lngRow As Long
    For lngRow = 3 To Cells(2, 1).End(xlDown).Row
        If Not Rows(lngRow).Hidden Then Exit For
    Next
    MsgBox "Erste Zeile: " & CStr(lngRow) & " letzte Zeile: " & CStr(Cells(2, 1).End(xlDown).Row)
End Sub


Gruß
Nepumuk
Anzeige
AW: Erste sichtbare Zeile im Filterbereich?
Frank
Hallo Nepumuk,
der Code liefert mir zweimal eine 3, obwohl die letzte sichbare Zelle A23 ist?
Zeile 3 sind Überschriftten, Zeile 4 ist durch Filter ausgeblendet, Zeile 5 ist wieder
sichtbar. Hab deinen Code 1:1 kopiert.
Gruß Frank
AW: Erste sichtbare Zeile im Filterbereich?
02.10.2004 14:06:28
Nepumuk
Hallo Frank,
das war ein Missverständnis. Mit Filterbereich meine ich die erste gefilterte Zeile.


Public Sub Frank()
    Dim lngRow As Long
    For lngRow = 4 To Cells(3, 1).End(xlDown).Row
        If Not Rows(lngRow).Hidden Then Exit For
    Next
    MsgBox "Erste Zeile: " & CStr(lngRow) & " letzte Zeile: " & CStr(Cells(3, 1).End(xlDown).Row)
End Sub


Gruß
Nepumuk
Anzeige
Super, danke dir oT
Frank
oT
AW: Erste sichtbare Zeile im Filterbereich?
FP
Hi Frank,
das geht so:

Function FilterZeile1() As Long
With ActiveSheet
If .FilterMode Then
With .Cells.SpecialCells(xlVisible)
If .Areas(1).Rows.Count = 1 Then
FilterZeile1 = .Areas(2).Row
Else
If .Areas(1).Rows.Count > 1 Then FilterZeile1 = 2
End If
End With
End If
If FilterZeile1 > .Cells(1).CurrentRegion.Rows.Count Then _
FilterZeile1 = 0
End With
End Function

Rückgabewert 0 bedeutet:
a) Filtermodus ist NICHT aktiv
oder
b) keine Zeile entspricht den gesetzten Kriterien
Servus aus dem Salzkammergut
Franz
Anzeige
AW: Erste sichtbare Zeile im Filterbereich?
02.10.2004 14:33:16
Nepumuk
Hallo Franz,
der ist gut, den muss ich mir merken.
Gruß
Nepumuk
AW: da Zeile 3 die Überschriften enthält...
FP
Hi Frank,
mußt Du den Code noch daraufhin anpassen:

Function FilterZeile1() As Long
With ActiveSheet
If .FilterMode Then
With .Cells.SpecialCells(xlVisible)
If .Areas(1).Rows.Count < 4 Then
FilterZeile1 = .Areas(2).Row
Else
FilterZeile1 = 4
End If
If FilterZeile1 > .Areas(1).Cells(513).CurrentRegion.Rows.Count Then _
FilterZeile1 = 0
End With
End If
End With
End Function

Servus aus dem Salzkammergut
Franz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Erste sichtbare Zeile im Filterbereich ermitteln


Schritt-für-Schritt-Anleitung

Um die erste sichtbare Zeile in einem gefilterten Bereich in Excel zu ermitteln, kannst Du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

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

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code ein:

    Public Sub ErsteSichtbareZeile()
       Dim lngRow As Long
       For lngRow = 3 To Cells(2, 1).End(xlDown).Row
           If Not Rows(lngRow).Hidden Then Exit For
       Next
       MsgBox "Erste Zeile: " & CStr(lngRow) & " letzte Zeile: " & CStr(Cells(2, 1).End(xlDown).Row)
    End Sub
  4. Führe das Makro aus, um die erste sichtbare Zeile im Filterbereich zu ermitteln.


Häufige Fehler und Lösungen

Problem: Der Code gibt falsche Ergebnisse zurück, z.B. zweimal die Zeile 3.

Lösung: Stelle sicher, dass der Filterbereich korrekt definiert ist und die Zeilennummern im Code angepasst werden. Wenn die Überschriften in Zeile 3 sind, starte die Schleife bei Zeile 4.


Alternative Methoden

Eine alternative Methode zur Ermittlung der ersten sichtbaren Zeile ist die Verwendung einer Funktion. Füge diesen Code in ein Modul ein:

Function FilterZeile1() As Long
    With ActiveSheet
        If .FilterMode Then
            With .Cells.SpecialCells(xlVisible)
                If .Areas(1).Rows.Count < 4 Then
                    FilterZeile1 = .Areas(2).Row
                Else
                    FilterZeile1 = 4
                End If
            End With
        End If
    End With
End Function

Die Rückgabewerte zeigen an, ob der Filter aktiv ist oder ob keine Zeile den Kriterien entspricht.


Praktische Beispiele

Angenommen, Du hast eine Tabelle, in der die erste Zeile die Überschriften enthält und die Daten in den Zeilen darunter stehen. Hier ist ein Beispiel, wie Du die erste sichtbare Zeile ermitteln kannst:

  1. Setze einen Filter auf eine der Spalten.
  2. Führe das oben beschriebene Makro aus.
  3. Das Ergebnis zeigt Dir die erste sichtbare Zeile nach Anwendung des Filters.

Tipps für Profis

  • Verwende die .SpecialCells-Methode, um schnell zu den sichtbaren Zellen zu navigieren.
  • Experimentiere mit verschiedenen Filterkriterien, um zu sehen, wie sie die Ergebnisse beeinflussen.
  • Speichere Deine VBA-Skripte in einer Datei, damit Du sie in anderen Arbeitsmappen wiederverwenden kannst.

FAQ: Häufige Fragen

1. Wie kann ich die erste sichtbare Zeile in einem gefilterten Bereich ermitteln?
Verwende das VBA-Makro, das die Zeilen überprüft und die erste sichtbare Zeile ausgibt.

2. Was tun, wenn der Filter in einer anderen Zeile beginnt?
Passe die Startzeile in der Schleife entsprechend an. Wenn der Filter in Zeile 3 beginnt, setze die Schleife auf For lngRow = 4 To ....

3. Warum zeigt das Makro die falsche Zeile an?
Überprüfe, ob der Filter korrekt gesetzt ist und ob der Code die richtige Zeile für die Schleife verwendet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige