VBA-Programmierung in Microsoft Excel

Tutorial: Excel-Beispiele

VBA-Begriff: Static-Anweisung

Wird auf Prozedurebene verwendet, um Variablen zu deklarieren und den nötigen Speicher zu reservieren. Mit der Static-Anweisung deklarierte Variablen behalten ihren Wert, solange der Code ausgeführt wird.

Syntax

Static VarName[([Indizes])] [As [New] Typ] [, VarName[([Indizes])] [As [New] Typ]] . . .

Die Syntax der Static-Anweisung besteht aus folgenden Teilen:

Teil Beschreibung
VarName Erforderlich. Name der Variablen gemäß den Standardkonventionen für Namen von Variablen.
Indizes Optional. Dimensionen einer Datenfeldvariablen. Bis zu 60 Dimensionen sind zulässig. Die Syntax für das Argument Indizes ist:
  [Untergrenze To] Obergrenze [,[Untergrenze To] Obergrenze] . . .
  Wenn nicht explizit in Untergrenze angegeben, wird die Untergrenze eines Datenfeldes durch die Option Base-Anweisung gesteuert. Die Untergrenze ist Null, wenn keine Option Base-Anweisung vorhanden ist.
New Optional. Dieses Schlüsselwort ermöglicht das implizite Erstellen eines Objekts. Wenn Sie New bei der Deklaration der Objektvariablen verwenden, wird eine neue Instanz des Objekts aufgrund des ersten Verweises erstellt, so daß Sie die Set-Anweisung für die Zuweisung des Objektverweises nicht verwenden müssen. Das Schlüsselwort New kann nicht zur Deklaration von Variablen eines integrierten Datentyps oder zur Deklaration von Instanzen abhängiger Objekte verwendet werden.
Typ Optional. Datentyp der Variablen. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String, (für Zeichenfolgen variabler Länge), String * Länge (für Zeichenfolgen fester Länge), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp. Verwenden Sie für jede deklarierte Variable einen separaten As Typ-Abschnitt.

Bemerkungen

Wenn der Code eines Moduls ausgeführt wird, behalten mit der Static-Anweisung deklarierte Variablen ihren Wert, bis das Modul zurückgesetzt oder neu gestartet wird. In nichtstatischen Prozeduren können Sie die Static-Anweisung verwenden, um explizit Variablen zu deklarieren, die nur innerhalb der Prozedur verfügbar sind, deren Lebensdauer aber der des Moduls entspricht, in dem die Prozedur definiert wurde.

Mit einer Static-Anweisung innerhalb einer Prozedur können Sie den Datentyp einer Variablen deklarieren, die ihren Wert zwischen Prozeduraufrufen behält. Die folgende Anweisung deklariert zum Beispiel ein Datenfeld fester Größe für ganze Zahlen:

Static AngestellenAnzahl(200) As Integer

Die folgende Anweisung deklariert eine Variable für eine neue Instanz einer Tabelle:

Static X As New Worksheet

Wenn das Schlüsselwort New nicht bei der Deklaration einer Objektvariablen verwendet wird, existiert momentan keine Instanz des Objekts. Einer Variablen mit einem Verweis auf ein Objekt muß mit der Set-Anweisung ein existierendes Objekt zugewiesen werden, bevor sie verwendet werden kann. Eine deklarierte Objektvariable hat vor dem Zuweisen eines Objekts den Spezialwert Nothing, der anzeigt, daß die Variable auf keine bestimmte Instanz eines Objekts verweist. Wenn Sie das Schlüsselwort New bei der Deklaration verwenden, so wird eine Instanz des Objekts aufgrund der ersten auf das Objekt verweisenden Referenz erstellt.

Wenn Sie keinen Datentyp oder Objekttyp angeben und auch keine DefTyp-Anweisung in dem Modul verwenden, erhält die Variable standardmäßig den Datentyp Variant.

Anmerkung   Die Anweisung Static und das Schlüsselwort Static wirken sich unterschiedlich auf die Lebensdauer von Variablen aus. Wenn Sie eine Prozedur mit dem Schlüsselwort Static deklarieren (wie in Static Sub VerkaufsZahlen()), wird der Speicherplatz für alle lokalen Variablen in der Prozedur einmal reserviert, und die Werte der Variablen bleiben während der gesamten Laufzeit des Codes erhalten. In nichtstatischen Prozeduren wird der Speicherplatz für Variablen bei jedem Aufruf der Prozedur neu reserviert und am Ende der Prozedur wieder freigegeben. Die Anweisung Static deklariert Variablen in nichtstatischen Prozeduren als statisch mit dem Ergebnis, daß diese Variablen ihren Wert während der gesamten Laufzeit des Programms behalten.

Bei der Initialisierung wird numerischen Variablen der Wert 0 und Zeichenfolgen variabler Länge eine Null-Zeichenfolge ("") zugewiesen. Zeichenfolgen fester Länge werden mit Nullen aufgefüllt, und Variant-Variablen werden mit Empty initialisiert. Alle Elemente einer Variablen mit einem benutzerdefinierten Typ werden genauso initialisiert wie eigenständige Variablen des entsprechenden Datentyps.

Anmerkung   Wenn Sie die Static-Anweisung innerhalb einer Prozedur verwenden, sollten Sie sie zusammen mit allen anderen Deklarationen, wie beispielsweise der Dim-Anweisung (sofern vorhanden), an den Anfang der Prozedur stellen.