Die Anzahl Zellen in Bereichen der Tabelle liefert die Eigenschaft Count
des Range-Objektes, das die Zellen umfaßt. Die Bereiche müssen nicht
aneinandergrenzen und werden als Liste übergeben. Bsp.:
With Worksheets("Tabelle1")
anz1 = .Range("A1:A3").Count ' 3 Zellen
anz2 = .Range("A1:B3").Count ' 6 Zellen
anz3 = .Range("A1:B3, D2:D5").Count ' 10 Zellen
anz4 = Union(.Range("A1:B3"), .Range("D2:D5")).Count ' 10 Zellen
Zeilen = .Range("A1:B3").Rows.Count ' 3 Zeilen
Spalten = .Range("A1:B3").Columns.Count ' 2 Spalten
End With
Es kann auch Cells(Zeile, Spalte) anstatt "..." angegeben werden:
anz2 = .Range(.Cells(1, 1), .Cells(3, 2)).Count ' 6 Zellen
Bei Cells() für mehrfache Bereiche muß es aufgegliedert werden:
anz3 = .Range(.Cells(1, 1), .Cells(3, 2)).Count + _
.Range(.Cells(2, 4), .Cells(5, 4)).Count ' 10 Zellen
UBound() liefert den Index der Obergrenze eines Array, LBound() liefert
den Index der Untergrenze, Array-Größe ist UBound()-LBound()+1.
Das 1. Argment darf auch ein Zellenbereich sein. Ein Test ergab, daß aus
einer Liste mehrerer Bereiche wohl nur der zuerst genannte ausgewertet
wird, die übrigen nicht gelten und daß es u.U. zu Fehlern kommen kann.
Eine einzelne Zelle ist kein Array, Range("A1:A1") gilt nicht.
Ist das 1. Argument ein Zellenbereich, dann sind als 2. Argument für die
Dimension die Werte 1 und 2 möglich. UBound() und LBound() geben für den
Wert 1 einen Zeilenindex, für Wert 2 einen Spaltenindex zurück. Index-
Untergrenze ist 1, da Tabellen in der 1. Zeile und 1. Spalte beginnen.