Die Range-Eigenschaft in VBA
Neben der Cells-Eigenschaft gibt es noch ein ziemlich ähnliche Range-Eigenschaft.
- Objektkatalogeintrag zu »Excel.Range.Range«
Property Range(Cell1, [Cell2]) As Range
schreibgeschützt
Element von Excel.Global
Sie ergibt ebenfalls ein Objekt vom Typ »Range«.
Man muß zwischen der Eigenschaft »Range« und dem Typ (der Klasse) »Range« unterscheiden.
- Objektkatalogeintrag zum Typ »Excel.Range«
Class Range
Element von Excel
Die Eigenschaft »Range« hat eigene Parameter »Cell1« und »Cell2« (während »Cells« ein Range-Objekt ergab, das _Default-, Value- und Item-Einträge enthält.)
- Objektkatalogeinträge
- Property Cells As Range
- Property Range(Cell1, [Cell2]) As Range
Meist wird nur der erste Parameter von »Range« verwendet. Er akzeptiert eine Adresse in der aus Excel bekannten Schreibweise.
Modul1
Sub Kopieren
Dim r As Object ' Spaete Bindung
Set r = Range( "B2" )
Let r = 2
End Sub
Mappe1.xls - [Modul1 (Code)]
Sub Kopieren
Dim r As Object
Set r = Cells( 1, 1 )
Let r = 1
Set r = Range( "B2" )
Let r = 2
End Sub
(siehe Lokalfenster)
Mappe1.xls - [Modul1 (Code)]
Sub Kopieren
Dim r As Excel.Range
Set r = Cells( 1, 1 )
Let r = 1
Set r = Range( "B2" )
Let r = 2
End Sub
(siehe Lokalfenster)
? Range( "A6" )
-0,421826388883346
? Cells( 6, 1 )
-0,421826388883346
? Range( "Testx" ) ' benannte Zelle
bsp: kopieren: Range("b1")=Range("a1")
- Das erste Argument kann auch einen Bereich wie z.B., »A1:B2« oder eine Gruppe wie »A1,B2« oder eine Gruppe von Bereichen angeben.
- Ein eventuelles zweites Argument gibt das Ende eines Bereiches an, der mit dem ersten Argument beginnnt.
- Die Argumente können auch Range-Objekte sein.
Cells
Man beachte, daß auch bei den folgenden Beispielen meist Cells statt Range verwendet werden könnte!
Man bevorzugt Cells, wenn die anzusprechenden Adressen schon in numerischer Form vorliegen.
Bereiche
Bereich: Range("A1:B2"), oder: Range( "A1", "B2" ), oder: Range( Range("A1"), Range("B2") )
Notizen
- Direktbereich
Range("A1").CurrentRegion.Interior.ColorIndex =17
- Direktbereich
? Range( "A1" ).End( xlDown ).Address
$A$2
- Direktbereich
Range( "A1", Range( "A1" ).End( xlDown ) ) = 77
Verschachtelte Zugriffe
Range( "A1:B2" ).Cells( 1, 1 )
Range( "A1:B2" ).Item( 1, 1 )
Range( "A1:B2" )( 1, 1 )
Range( Range( "A1" ), Range( "A1" ).End( xlDown ))
Übungsaufgaben
/ Übungsaufgabe
Schreiben Sie ohne VBA einen beliebigen Zahlenwert in die Zelle "A1". Dieser Wert soll einen Warenwert (netto, d.h. ohne Mehrwertsteuer) darstellen.
Schreiben Sie dann eine VBA -Anweisung, welche die Mehrwertsteuer des Wertes der Zelle "A1" in die Zelle "A2" schreibt. (Der Wert in der Zelle "A1" soll also unverändert bleiben.)
In der Lösung soll nicht »Cells«, sondern »Range« verwendet werden.