wie kann ich in einem gefilterten Bereich die Zeilennummern der ersten
sichtbaren und der letzten sichtbaren Zeile ermitteln?
Grüße Frank
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
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
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
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
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:
Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
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
Führe das Makro aus, um die erste sichtbare Zeile im Filterbereich zu ermitteln.
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.
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.
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:
.SpecialCells-Methode, um schnell zu den sichtbaren Zellen zu navigieren.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.