Objekte zuweisen ◦ Zusammenfassung ◦ ?

Auf die Eigenschaften und Methoden eines Objekts greift man über den Punktoperator zu. Zelle1 und Zelle2 seien zwei Objektvariablen, die auf verschiedene Zellen eines Tabellenblattes zeigen. Die folgende Zeile weist der Eigenschaft Value der Zelle1 den Wert der Eigenschaft Value der Zelle2 zu:

    Zelle1.Value = Zelle2.Value                                '(1)

Mit anderen Worten, (1) kopiert den Inhalt der Variablen Value auf der rechten Seite in die Variable Value auf der linken Seite.

Wir betrachten nun folgende Anweisung:

    Zelle1 = Zelle2                                            '(2)

Der erste Gedanke ist vermutlich, dass (2) das Objekt in der Variablen Zelle2 in die linke Variable Zelle1 kopiert. Objektvariablen enthalten aber keine Objekte, sondern Objektverweise. Tatsächlich werden bei der Zuweisung an eine Objektvariable immer nur Verweise an die linke Seite übergeben, und nie Kopien von den Objekten erstellt.

Die Syntax von (2) ist nicht korrekt. In Visual Basic muss nämlich die Zuweisung an eine Objektvariable immer mit Set eingeleitet werden:

    Set Zelle1 = Zelle2                                        '(3)

Das folgende Bild veranschaulicht die Wirkung der Anweisungen (1) und (3).

In den meisten Fällen meldet Visual Basic bei einem vergessenen Set Operator einen Fehler zur Laufzeit. Im obigen Beispiel stellt die Zeile jedoch auch ohne Set eine gültige Anweisung dar. Der Interpreter liest nämlich den Wert der Standardeigenschaft von Zelle2 und weist ihn der Standardeigenschaft von Zelle1 zu. Als Standardeigenschaft bezeichnet man in Visual Basic jene Eigenschaft, die der Interpreter verwendet, wenn keine andere Eigenschaft explizit angegeben wird. Da die Standardeigenschaft von Range-Objekten die Value-Eigenschaft ist, führt die Anweisung (2) zum selben Ergebnis wie die Anweisung (1).

    Zelle1.Value = Zelle2.Value   <=>   Zelle1 = Zelle2

Dasselbe Problem taucht auch beim Vergleich zwischen Objektvariablen auf.

Standardeigenschaften

©abo