Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

letzte zeile finden trotz eingestellten autofilter? VBA

1,653 views
Skip to first unread message

michlchen

unread,
May 3, 2010, 8:15:39 AM5/3/10
to
hallo ng.

ich möchte gerne die letzte Zeile mit "Ende = Cells(Rows.Count,
1).End(xlUp).Row"
finden. leider macht excel 2007 das nicht, wenn ich den autofilter
drin habe und er gibt mir die zuletzt selektierte zeile. ich möchte
aber bei allen eine aktion machen und benötige somit die letzte zeile.
den autofilter aufheben möchte ich nicht, weil ich ihn mir nicht
merken kann (oder doch? wenn ja, wie?)
oder gibts ne möglichkeit mit specialcells zu arbeiten? welcher
parameter wäre das?


danke.

michlchen

unread,
May 3, 2010, 9:07:49 AM5/3/10
to
kurzer nachtrag:

wie komm ich eigentlich beim autofilter von einer sichtbaren zeile zur
nächsten?

normalerweise verwende ich gerne ActiveCell.Offset(1, 0).Select.
wenn ich hier noch specialcells(xlvisible) einbaue geht das aber
nicht. (also "ActiveCell.Offset(1,
0).SpecialCells(xlCellTypeVisible).Select" und "ActiveCell.Offset(1,
0).SpecialCells(xlCellTypeVisible).Select" geht genau so wenig)
kann ich irgendwie mit VBA simulieren, dass ich die Taste runter
gedrückt habe und er springt mir dann von zeile 20 auf zeile 39 (39
sei die nächste gefilterte nach der 20. wenn ich offset(1,0) machen
würde, würde er ja die 21 nehmen und die ist rausgefiltert...)

danke.

michlchen

unread,
May 3, 2010, 10:42:18 AM5/3/10
to
hat sich erledigt.

es geht mit ActiveCell.Offset(1, 0).Select.
man muss nur noch abfragen, ob die ActiveCell.Height = 0 ist.

also nochmal:

Do Until ActiveCell.Offset(1, 0).Value = ""
ActiveCell.Offset(1, 0).Select
If ActiveCell.Height <> 0 Then
...
end if
loop


aber schade, dass es mit specialcells nicht geklappt hat.

Andreas Killer

unread,
May 3, 2010, 11:38:40 AM5/3/10
to
michlchen schrieb:

> ich mīŋŊchte gerne die letzte Zeile mit "Ende = Cells(Rows.Count,


> 1).End(xlUp).Row"
> finden. leider macht excel 2007 das nicht, wenn ich den autofilter

> drin habe und er gibt mir die zuletzt selektierte zeile. ich mīŋŊchte
Das machen alle Versionen so, denn damit schlieīŋŊt Du nicht
un-/sichtbare Zellen aus/ein.

Andreas.

Option Explicit

Sub Example_GetAutoFilterRange()
Dim Bereich As Range, N As Long, zeile As Range
Set Bereich = GetAutoFilterRange
For N = 1 To GetRowsCount(Bereich)
Set zeile = GetRow(Bereich, N)
Debug.Print zeile.Address
Next
End Sub

Function GetRowsCount(Bereich As Range) As Long
'Liefert die Anzahl Zeilen in Bereich
Dim A As Range
For Each A In Bereich.Areas
GetRowsCount = GetRowsCount + A.Rows.Count
Next
End Function

Function GetRow(Bereich As Range, ByVal N As Long) As Range
'Liefert die Nte Zeile aus Bereich
Dim A As Range
If N <= 0 Then Exit Function
For Each A In Bereich.Areas
If N - A.Rows.Count <= 0 Then
Set GetRow = A.Rows(N)
Exit Function
End If
N = N - A.Rows.Count
Next
End Function

Function GetAutoFilterRange( _
Optional WithoutHeader As Boolean = True, _
Optional ByVal W As Worksheet = Nothing) As Range
'Gibt den sichbaren Datenbereich eines Autofilters zurīŋŊck
Dim R As Range
If W Is Nothing Then Set W = ActiveSheet
If W.AutoFilterMode Then
'Aktiven Filterbereich holen
Set R = W.AutoFilter.Range
'īŋŊberschrift aus dem Bereich entfernen?
If WithoutHeader Then _
Set R = W.Range(W.Cells(R.Row + 1, R.Column), _
W.Cells(R.Row + R.Rows.Count - 1, R.Column + R.Columns _
.Count - 1))
'Wenn kein Filter aktiv ist den gesamten Bereich zurīŋŊckgeben
If W.FilterMode Then
'Wenn keine Zellen da sind gibt es einen Fehler!
On Error Resume Next
'Alle sichtbaren Zellen im Filterbereich
Set R = R.SpecialCells(xlCellTypeVisible)
'Alle Zellen wurden gefiltert, kein Datenbereich
If Err <> 0 Then Set R = Nothing
End If
'Bereich zurīŋŊckgeben
Set GetAutoFilterRange = R
Else
'Kein Autofilter, kein Bereich
Set GetAutoFilterRange = Nothing
End If
End Function

frankarendt-theilen

unread,
May 3, 2010, 12:36:19 PM5/3/10
to
Hallo Micha,
folgende VBA-Anweisung erledigt den Job:

ActiveSheet.AutoFilter.Range.Cells(ActiveSheet.AutoFilter.Range.Cells.Count).Row

Diese Anweisung setzt voraus, das der Autofilter eingerichtet wurde.


Mit freundlichem Gru� aus der Rattenf�ngerstadt Hameln
Frank Arendt-Theilen
--
(ehem. MVP f�r Excel)
Website: www.xl-faq.de
Microsoft - Excel, Bedingte Formatierung, ISBN: 978-3-86645-806-2

t.hi...@gmail.com

unread,
Jun 14, 2016, 8:16:31 AM6/14/16
to
10000 Dank!!!
0 new messages