Public Sub Zellen_durchlaufen1() Dim i As Integer Dim j As Integer Dim CounterRow As Integer Dim CounterColumn As Integer CounterRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row CounterColumn = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column For i = 1 To CounterRow For j = 1 To CounterColumn Debug.Print Cells(i, j).Address Next j Next i End Sub
ALTERNATIVE
Public Sub Zellen_durchlaufen2() Dim myCell As Range For Each myCell In ActiveSheet.UsedRange Debug.Print myCell.Address Next End Sub
Grundlagen
- Alle Zeilen / Spalten eines Tabellenblattes:
- Columns.Count – gibt die Anzahl der Spalten aus (auch die ausgeblendeten und leeren) – idR: 16384
- Rows.Count – gibt die Anzahl der Zeilen aus (auch die ausgeblendeten und leeren) – idR: 1048576
- Zeilen / Spalten bis zur ersten ausgeblendeten Zeile / Spalte
- Cells.SpecialCells(xlCellTypeVisible).Columns.Count – gibt die Anzahl der sichtbaren Spalten aus (auch die leeren)
- Cells.SpecialCells(xlCellTypeVisible).Rows.Count – gibt die Anzahl der sichtbaren Zeilen aus (auch die leeren)Wenn keine Zeile bzw. Spalte ausgeblendet wurde, dann entspricht das den Columns.Count bzw. Rows.Count.
- letzte Zeile / letzte Spalte Wie man gesehen hat, ergeben die zwei bereits erwähnten Methoden nicht die letzte beschriebene Zelle eines Eingabebereiches.
- ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row – gibt die letzte beschriebene Zelle aus
- ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column – gibt die letzte beschriebene Spalte aus
- für eine bestimmte Zelle kann man auch … verwenden
- ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
- ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
- Alternativ gibt es auch Funktionen für Zellen mit Konstanten, Zellen mit Formeln usw. [siehe hier]
Alternativ gibt es auch Funktionen für Zellen mit Konstanten, Zellen mit Formeln usw. [siehe hier]
Beispiel 1
Columns.Count: 16384
Rows.Count: 1048576
— ActiveSheet.UsedRange.SpecialCells(???) —
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row: 7
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column: 4
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Row: 4
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Column: 4
— Cells.SpecialCells(???) —
Cells.SpecialCells(xlCellTypeVisible).Columns.Count: 16384
Cells.SpecialCells(xlCellTypeVisible).Rows.Count: 1048576
— xlUp & xlToLeft —
ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row: 7
ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column: 4
ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row: 4
ActiveSheet.Cells(4, Columns.Count).End(xlToLeft).Column: 3
Beispiel 2
Columns.Count: 16384
Rows.Count: 1048576
— ActiveSheet.UsedRange.SpecialCells(???) —
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row: 8
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column: 4
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Row: 4
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Column: 1
— Cells.SpecialCells(???) —
Cells.SpecialCells(xlCellTypeVisible).Columns.Count: 16384
Cells.SpecialCells(xlCellTypeVisible).Rows.Count: 1048576
— xlUp & xlToLeft —
ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row: 8
ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column: 4
ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row: 5
ActiveSheet.Cells(4, Columns.Count).End(xlToLeft).Column: 1
Beispiel 3
Columns.Count: 16384
Rows.Count: 1048576
— ActiveSheet.UsedRange.SpecialCells(???) —
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row: 7
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column: 4
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Row: 5
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Column: 3
— Cells.SpecialCells(???) —
Cells.SpecialCells(xlCellTypeVisible).Columns.Count: 16384
Cells.SpecialCells(xlCellTypeVisible).Rows.Count: 3
— xlUp & xlToLeft —
ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row: 7
ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column: 4
ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row: 3
ActiveSheet.Cells(4, Columns.Count).End(xlToLeft).Column: 4
VBA für Beispiele
Sub Demo_Spalten_Zeilen() Debug.Print "Columns.Count: " & Columns.Count Debug.Print "Rows.Count: " & Rows.Count Debug.Print "---- ActiveSheet.UsedRange.SpecialCells(???) ---" Debug.Print "ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row: " & ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row Debug.Print "ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column: " & ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column Debug.Print "ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Row: " & ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Row Debug.Print "ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Column: " & ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Column Debug.Print "---- Cells.SpecialCells(???) ---" Debug.Print "Cells.SpecialCells(xlCellTypeVisible).Columns.Count: " & Cells.SpecialCells(xlCellTypeVisible).Columns.Count Debug.Print "Cells.SpecialCells(xlCellTypeVisible).Rows.Count: " & Cells.SpecialCells(xlCellTypeVisible).Rows.Count Debug.Print "---- xlUp & xlToLeft ---" Debug.Print "ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row: " & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row Debug.Print "ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column: " & ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column Debug.Print "ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row: " & ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row Debug.Print "ActiveSheet.Cells(4, Columns.Count).End(xlToLeft).Column: " & ActiveSheet.Cells(4, Columns.Count).End(xlToLeft).Column End Sub