Letzte Zeile/Spalte ohne Bindung an Vektor

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Letzte Zeile/Spalte ohne Bindung an Vektor
von: Oliver
Geschrieben am: 30.03.2005 13:37:59
Hallo,
also trotz stundenlangen Google- und Forum-Surfens habe ich kein Ergebnis zu meinem Problem:
Ich möchte mittels VBA die letzte Spalte (bzw. Zeile) eines Blattes finden. So weit, so gut.
Dies soll aber SOWOHL trotz Autofilter-eingeschränkter Anzeige ALS AUCH ohne Beschränkung auf einen bestimmten Vektor (d.h. nicht die letzte Zelle in Spalte A, sondern die letzte Zeile über alles) funktionieren.
Was m.E. nicht funktioniert:
- SpecialCells (berücksichtigt auch Formatierungen)
- UsedRange (dto.)
- LookUp (auf einen Vektor bezogen)
- Find (nur auf gefilterte Menge bezogen)
Das Einfachste (eine eigene Funktion, die die Zellen im UsedRange abklappert) dauert leider zu lange.
Hiiiiiiiiiiiiiiiiiiiiiiiiiilfe!!!!!!
Grüße
Oliver

Bild

Betrifft: AW: Letzte Zeile/Spalte ohne Bindung an Vektor
von: WernerB.
Geschrieben am: 30.03.2005 13:56:03
Hallo Oliver,
wie gefällt Dir das?
Letzte Zeile mit Inhalt (über alle Spalten):
Dim laR As Long
On Error Resume Next
laR = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
On Error GoTo 0
Letzte Spalte mit Inhalt (über alle Zeilen):
Dim laC As Integer
On Error Resume Next
laC = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
On Error GoTo 0

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Bild

Betrifft: AW: Letzte Zeile/Spalte ohne Bindung an Vektor
von: Oliver
Geschrieben am: 30.03.2005 14:01:40
Hallo WernerB.,
vielen Dank für den Versuch, aber das ist - wie in meiner Frage geschrieben - genau das, was nicht funktioniert. Sobald ich einen Autofilter aktiviere, sucht er nur noch in der gefilterten Menge nach der letzten Zeile...
Gruß
Oliver
Bild

Betrifft: AW: Letzte Zeile/Spalte ohne Bindung an Vektor
von: Martin Beck
Geschrieben am: 30.03.2005 15:40:10
Hallo Oliver,
versuch's mal so:

Sub Letzte_Zelle()
Application.ScreenUpdating = False
s = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
Letzte = ActiveSheet.UsedRange.Rows.Count + 1
mx = ActiveSheet.UsedRange.Rows.Count
For i = s To 1 Step -1
    For j = Letzte To 1 Step -1
        If Not IsEmpty(Cells(j, 1)) Then
            mx = Application.WorksheetFunction.Max(i, mx)
        End If
        Exit For
    Next j
Next i
Application.ScreenUpdating = True
MsgBox mx
End Sub

Gruß
Martin Beck
Bild

Betrifft: AW: Letzte Zeile/Spalte ohne Bindung an Vektor
von: Oliver
Geschrieben am: 30.03.2005 15:56:58
Hallo Martin,
vielen Dank.
Das ist ziemlich exakt die "manuelle" Lösung, die ich auch realisiert habe - allerdings beende ich die Schleife nicht vorzeitig, da ich bei der Gelegenheit sowohl die letzte Zeile wie auch die letzte Spalte ermittle. Und diese Routine dauert bei ca. 100x200 Zellen schon ca. 3 Sekunden - das kann bei häufigem Gebrauch ein Ausschlusskriterium sein...
Gruß
Oliver
Bild

Betrifft: AW: Letzte Zeile/Spalte ohne Bindung an Vektor
von: Martin Beck
Geschrieben am: 30.03.2005 16:23:24
Hallo Oliver,
sofern Du keine Spalten ausgeblendet hast, steht die letzte Spalte m.E. schon in s.
Hier noch ein paar Links, vielleicht hilft da etwas weiter:
http://www.j-walk.com/ss/excel/tips/tip30.htm
https://www.herber.de/mailing/066799h.htm
Gruß
Martin Beck
Bild

Betrifft: AW: Letzte Zeile/Spalte ohne Bindung an Vektor
von: Oliver
Geschrieben am: 30.03.2005 16:40:22
Hallo Martin,
aber genau das ist das Problem. Denn ich habe sowohl Spalten ausgeblendet als auch Zeilen mittels Autofilter deselektiert. Und SpecialCells berücksichtigt ja auch Formatierungen. Deshalb muss ich alle Zellen durchlatschen.
Gruß
Oliver
Bild

Betrifft: AW: Letzte Zeile/Spalte ohne Bindung an Vektor
von: Martin Beck
Geschrieben am: 30.03.2005 17:23:33
Hallo Oliver,
von ausgeblendeten Salten war bislang nicht die Rede. Ich habe mal die Walkenbach-Lösung abgespeckt, hilft das?

Sub Letzte_Zelle2()
z = ActiveSheet.UsedRange.Rows.Count
s = ActiveSheet.UsedRange.Columns.Count
Do Until Application.WorksheetFunction.CountBlank(Rows(z)) < 256
    z = z - 1
Loop
Do Until Application.WorksheetFunction.CountBlank(Columns(s)) < 65536
    s = s - 1
Loop
MsgBox s
MsgBox z
End Sub

Gruß
Martin Beck
Bild

Betrifft: AW: Letzte Zeile/Spalte ohne Bindung an Vektor
von: Oliver
Geschrieben am: 30.03.2005 17:32:33
Hallo Martin,
super Lösung! Universell funktionierend, ausgesprochen schlank und deutlich schneller als meine bisherige.
Auf das CountBlank war ich nicht gekommen. Deshalb habe ich zellenweise gesucht. Aber die internen Funktionen sind natürlich um Größenordnungen schneller und so spare ich fast die gesamte spürbare Rechenzeit ein.
Danke!
Oliver
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Letzte Zeile/Spalte ohne Bindung an Vektor"