Die Excel Wühlkiste

(letzte) benutzte Zeilen - Spalten finden

markierter Bereich: erste und letzte Zelle finden
Adressen eines markierten Bereichs auslesen

Das ist ein ewiges Thema in Excel-VBA: Das Auffinden der letzten benutzten Zeile oder Spalte in Excel. Es gibt mehrere Lösungsansätze, die je nach Art der Daten in der Tabelle, der Grösse der gesamten Tabelle, oder der Tabellenstruktur eingesetzt werden. Der Anwender muss im jeweiligen Falle selber entscheiden, wieviel Aufwand nötig ist. Den optimalen Universalcode, für alle Fälle gleich einsetzbar, gibt es nicht. Zum Beispiel enthalten scheinbar leere Zellen manchmal doch Daten oder leere Strings, weshalb dann der eine oder andere Code nicht das gewünschte Ergebnis liefert.

Sub letzte_Zeile()
'letzte benutzte Zelle in Spalte 3 finden
DIM Ende As Long
With ActiveSheet
Ende = .Cells(Rows.Count, 3).End(xlUp).Row
End With
'Dein Code....
End Sub

Sub letzte_Zeile()
DIM Ende As Long
Ende = UsedRange.Rows.Count
End Sub

Sub letzte_Spalte()
DIM Ende As Long
Ende = UsedRange.Columns.Count
End Sub

Sub letzte_Zeile()
DIM Ende As Long
Ende = 0
Do Until Cells(Ende + 1, 1) = ""
Ende = Ende + 1
Loop
End Sub

Sub letzte_Zeile()
DIM Ende As Long
Ende = 0
Do Until IsEmpty(Cells(Ende + 1, 1))
Ende = Ende + 1
Loop
End Sub

Sub letzte_Zeile()
DIM Ende As Long
Ende = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
End Sub

Sub letzte_Spalte()
DIM Ende As Long
Ende = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
End Sub

Das folgende Beispiel ist interessant, denn es liefert das gleiche
Ergebnis, wie das vorherige Makro. Obwohl hier explizit A:A
angegeben wird, liefert xlCellTypeLastCell die letzte Zelle
des gesamten Blattes und nicht die letzte Zelle der angegebenen
Spalte. Jedoch benötigt man hier ActiveSheet.Cells nicht.

Sub letzte_Zeile()
DIM Ende As Long
Ende = Range("A:A").SpecialCells(xlCellTypeLastCell).Row
End Sub

Auch eine Möglichkeit, wenn man nicht ganz sicher ist
dass VBA die gwünschte Zelle richtig findet.
Man markiert die letzte (gewünschte) Zelle und lässt VBA
die Adresse (als String) auslesen.
Oder man Markiert einen ganzen Bereich und lässt sich diese
Adresse auslesen.
Diese Adresse, in einer Variablen gespeichert ( hier "s" ),
lässt sich äusserst bequem auf das Range-Objekt anwenden.
Siehe folgendes Beispiel:

Sub Adressen_auslesen()
Dim EZ As Integer  ' Nummer der ersten Zeile
Dim LZ As Integer  ' Nummer der letzten Zeile
Dim ES As String  ' Nummer der ersten Spalte
Dim LS As String  ' Nummer der letzten Spalte
Dim s As String  ' Adresse des markierten Bereichs
Dim x As String  ' Adresse der letzten Zelle im markierten Bereich

s = Selection.Address
EZ = Range(s).Row
MsgBox ("Erste Zeile = " & EZ)
LZ = Range(s).Row + Range(s).Rows.Count - 1
MsgBox ("letzte Zeile = " & LZ)
ES = Range(s).Column
MsgBox ("erste Spalte = " & ES)
LS = Range(s).Column + Range(s).Columns.Count - 1
MsgBox ("letzte Spalte = " & LS)
MsgBox ("selktierte Adresse = " & s)
x = Selection(Selection.Count).Address
MsgBox ("letzte Zelle im" & Chr(13) & "markierten Bereich = " & Chr(13) & x)
End Sub
Die Excel Wühlkiste
Valid HTML 4.01 Strict
letzte Aktualisierung: 13.02.2009
Autor: Hubert Scheidgen / 04.02.2009
W3C CSS-Validierungsservice