Grundlegendes zur Lebensdauer von Variablen
Der Zeitraum, über den eine Variable ihren Wert beibehält, wird als Lebensdauer bezeichnet. Der Wert einer Variablen kann sich innerhalb ihrer Lebensdauer ändern, aber es wird stets ein Wert beibehalten. Wenn eine Variable ihren Bereich verliert, weist sie keinen Wert mehr auf.
Wenn die Ausführung einer Prozedur beginnt, werden alle Variablen initialisiert. Eine numerische Variable wird mit „0“ (null) initialisiert, eine Zeichenfolge mit variabler Länge wird mit einer Zeichenfolge der Länge NULL ("") initialisiert, und eine Zeichenfolge mit fester Länge wird mit dem Zeichen gefüllt, das durch den ASCII-Zeichencode „0“ oder Chr( 0 ) dargestellt wird. Variant-Variablen werden als Empty initialisiert. Jedes Element einer Variablen mit benutzerdefiniertem Typ wird wie eine einzelne Variable initialisiert.
Wenn Sie eine Objektvariable deklarieren, wird Platz im Arbeitsspeicher reserviert. Ihr Wert bleibt jedoch so lange auf Nothing festgelegt, bis sie ihr mit der Set-Anweisung einen Objektverweis zuweisen.
Wenn der Wert einer Variablen während der Ausführung Ihres Codes nicht geändert wird, behält sie ihren initialisierten Wert bei, bis sie ihren Bereich verliert.
Eine Variable auf Prozedurebene, die mit der Dim-Anweisung deklariert wurde, behält ihren Wert bei, bis die Ausführung der Prozedur beendet ist. Wenn die Prozedur andere Prozeduren aufruft, behält die Variable ihren Wert bei, während auch diese Prozeduren ausgeführt werden.
Wird eine Variable auf Prozedurebene mit dem Schlüsselwort Static deklariert, behält sie ihren Wert bei, solange Code in einem beliebigen Modul ausgeführt wird. Nachdem die Ausführung des gesamten Codes beendet ist, verliert die Variable ihren Bereich und ihren Wert. Ihre Lebensdauer entspricht einer Variablen auf Modulebene.
Eine Variable auf Modulebene unterscheidet sich von einer statischen Variablen. In einem Standardmodul oder einem Klassenmodul wird der Wert beibehalten, bis Sie die Ausführung Ihres Codes beenden. In einem Klassenmodul wird dessen Wert beibehalten, solange eine Instanz der Klasse vorhanden ist. Weil Variablen auf Modulebene Speicherressourcen verbrauchen, bis Sie deren Werte zurücksetzen, verwenden Sie sie nur bei Bedarf.
Wenn Sie das Schlüsselwort Static vor einer Sub- oder Function-Anweisung einfügen, werden die Werte aller Variablen auf Prozedurebene in der Prozedur zwischen Aufrufen beibehalten.
Siehe auch
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.