Discussion:
letzte zeile finden trotz eingestellten autofilter? VBA
(zu alt für eine Antwort)
michlchen
2010-05-03 12:15:39 UTC
Permalink
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
2010-05-03 13:07:49 UTC
Permalink
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
2010-05-03 14:42:18 UTC
Permalink
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
2010-05-03 15:38:40 UTC
Permalink
Post by michlchen
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
unknown
2010-05-03 16:36:19 UTC
Permalink
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***@gmail.com
2016-06-14 12:16:29 UTC
Permalink
10000 Dank!!!

Loading...