Suchen Sie die letzte Zeile und Spalte in VBA
- Code-Syntax
- Holen Sie sich die letzte Zeile/Spalte mit Daten im aktuellen Arbeitsblatt in VBA
- Holen Sie sich die letzte Zeile/Spalte mit Daten aus einem anderen Arbeitsblatt in VBA
- Holen Sie sich die letzte Zeile/Spalte eines Arbeitsblatts mit einer Funktion
Beim Umgang mit Daten in einer Tabelle müssen wir die letzte Zeile und letzte Spalte mit Daten kennen. Es ist nützlich, eine Grenze festzulegen, wo unser Cursor iterieren kann.
VBA hat keine eingebaute Funktion, um die letzte Zeile/Spalte zurückzugeben, die in einer Tabelle verwendet wird. Aber mit einfachen VBA-Lösungen können wir unsere benutzerdefinierte Funktion so gestalten, dass sie den Wert der letzten Zeile/Spalte zurückgibt, die in einem Arbeitsblatt verwendet wird.
In diesem Artikel wird gezeigt, wie Sie mit Excel VBA die letzte Zeile und Spalte finden, die in einer Tabelle verwendet werden.
Code-Syntax
Code zum Abrufen der letzten Zeile:
Cells(Rows.Count,[colNum]).End(xlUp).Row
Code, um die letzte Spalte zu erhalten:
Cells(Rows.Count,[rowNum]).End(xlUp).Row
Wo,
[colNum] |
Ganzzahliger Wert der Spalte, in der sich die letzte Zeile befindet |
[rowNum] |
Ganzzahliger Wert der Zeile, in der sich die letzte Spalte befindet |
Holen Sie sich die letzte Zeile/Spalte mit Daten im aktuellen Arbeitsblatt in VBA
Der folgende Codeblock muss auf dem Zielarbeitsblatt auf Microsoft Excel Objects
geschrieben werden.
Sub GetLastRowCol()
'Declare lastRow and Last Col as Long datatype as we need to presume the values will be _
assigned with these variables are very high numbers.
Dim lastRow as Long
Dim lastCol as Long
'Assigning lastRow and lastCol variable
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Debug.Print "The last Row is: " & lastRow & vbNewline & "The last Column is :" & lastCol
End Sub
Ausgabe:
The last Row is :1
The last Column is :1
Holen Sie sich die letzte Zeile/Spalte mit Daten aus einem anderen Arbeitsblatt in VBA
Bei mehreren Arbeitsblättern müssen wir explizit zuweisen, in welchem Arbeitsblatt wir uns gerade befinden.
Der folgende Codeblock zeigt, wie Sie die letzte verwendete Zeile/Spalte aus einem anderen Arbeitsblatt erhalten.
Sub GetLastRowCol()
'Declare lastRow and Last Col as Long datatype as we need to presume the values will be _
assigned with these variables are very high numbers.
Dim lastRow as Long
Dim lastCol as Long
'Declaring workbook and worksheets
Dim wb as Workbook
Dim s1, s2 as Worksheet
'Initializing the wb, s1, and s2 objects.
Set wb = ThisWorkBook
Set s1 = wb.Sheets("Sheet1")
Set s2 = wb.Sheets("Sheet2")
'Will return the row number of the last row in Column A on Sheet1
lastRow = s1.Cells(s1.Rows.Count, 1).End(xlUp).Row
'Will return the row number of the last row in Row 1 on Sheet1
lastCol = s1.Cells(1, s1.Columns.Count).End(xlToLeft).Column
Debug.print "The last row in Sheet1:" & lastRow & vbNewline & "The last column in Sheet 1:" & lastCol
'Will return the row number of the last row in Column A on Sheet2
lastRow = s2.Cells(s2.Rows.Count, 1).End(xlUp).Row
'Will return the row number of the last row in Column A on Sheet2
lastCol = s2.Cells(1, s2.Columns.Count).End(xlToLeft).Column
Debug.print "The last row in Sheet2:" & lastRow & vbNewline & "The last column in Sheet 2:" & lastCol
End Sub
Ausgabe:
The last row in Sheet1: 1
The last column in Sheet1: 1
The last row in Sheet2: 1
The last column in Sheet2: 1
Holen Sie sich die letzte Zeile/Spalte eines Arbeitsblatts mit einer Funktion
Die folgende Funktion gibt die letzte Zeile oder die letzte Spalte basierend auf dem Worksheet-Argument zurück.
Function GetLastRow(s As Worksheet) As Long
GetLastRow = s.Cells(s.Rows.Count, 1).End(xlUp).Row
End Function
Function GetLastCol(s As Worksheet) As Long
GetLastCol = s.Cells(1, s.Columns.Count).End(xlToLeft).Column
End Function
Sub testRow()
Dim wb As Workbook
Dim s1 As Worksheet
Set wb = ThisWorkbook
Set s1 = wb.Sheets("Sheet1")
Debug.Print GetLastRow(s1)
End Sub
Sub testCol()
Dim wb As Workbook
Dim s1 As Worksheet
Set wb = ThisWorkbook
Set s1 = wb.Sheets("Sheet1")
Debug.Print GetLastCol(s1)
End Sub
testRow
-Ausgabe:
1
testCol
-Ausgabe:
1