Static-Anweisung

Wird auf Prozedurebene verwendet, um Variablen zu deklarieren und Speicherplatz zuzuweisen. Variablen, die mit der Static -Anweisung deklariert werden, behalten ihren Wert bei, solange der Code ausgeführt wird.

Syntax

Staticvarname [ ( [ subscripts ] ) ] ] [ As [ New ] type ], [ varname [ ( [ subscripts ] ) ] ] [ As [ New ] type ]] . . .

Die Syntax der Static-Anweisung enthält die folgenden Bestandteile:

Teil Beschreibung
varname Erforderlich. Name der Variablen; folgt standardmäßigen Konventionen für die Variablenbenennung.
subscripts Optional. Dimensionen einer Array-Variable; bis zu 60 Dimensionen können deklariert werden. Das Argument subscripts verwendet die folgende Syntax:

[ lowerTo ] upper [ , [ lowerTo ] upper ] . . .

Wenn sie nicht explizit in lower angegeben ist, wird die Untergrenze eines Arrays durch die Option Base-Anweisung gesteuert. Die Untergrenze ist Null, wenn keine Option Base-Anweisung vorhanden ist.
New Optional. Schlüsselwort, das das implizite Erstellen eines Objekts ermöglicht. Wenn Sie New bei der Deklaration der Objektvariable verwenden, wird eine neue Instanz des Objekts beim ersten Verweis darauf erstellt, sodass Sie den Objektverweis nicht mit der Set-Anweisung zuweisen müssen. Das Schlüsselwort New kann nicht zum Deklarieren der Variablen von systeminternen Datentypen oder zum Deklarieren von Instanzen abhängiger Objekte verwendet werden.
type Optional. Datentyp der Variablen; Kann Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (derzeit nicht unterstützt), Date, String (für Zeichenfolgen variabler Länge), Zeichenfolgenlänge (für Zeichenfolgen mit fester Länge), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp sein. Verwenden Sie eine eigene Astype-Klausel für jede definierte Variable.

HinwBemerkungeneise

Nachdem der Modulcode ausgeführt wurde, behalten variablen, die mit der Static-Anweisung deklariert werden, ihren Wert, bis das Modul zurückgesetzt oder neu gestartet wird. Ein Klassenmodulen behalten Variablen, die mit der Static-Anweisung deklariert wurden, ihren Wert in jeder Klasseninstanz bei, bis diese Instanz entfernt wird. In Formularmodulen behalten statische Variablen ihren Wert bei, bis das Formular geschlossen wird.

Verwenden Sie die Static-Anweisung in nicht statischen Prozeduren, um Variablen ausdrücklich zu deklarieren, die nur innerhalb der Prozedur sichtbar sind, deren Lebenszeit jedoch dem Modul entspricht, in dem die Prozedur definiert ist.

Verwenden Sie eine Static -Anweisung innerhalb einer Prozedur, um den Datentyp einer Variable zu deklarieren, die ihren Wert zwischen Modulaufrufen beibehält. Beispielsweise wird mit der folgenden Anweisung eine Array fester Größe von Ganzzahlwerten deklariert:

Static EmployeeNumber(200) As Integer 

Mit der folgenden Anweisung wird eine Variable für eine neue Instanz eines Arbeitsblatts deklariert:

Static X As New Worksheet 

Wenn das Schlüsselwort New beim Deklarieren einer Objektvariablen nicht verwendet wird, muss der Variablen, die auf das Objekt verweist, mithilfe der Set-Anweisung ein vorhandenes Objekt zugewiesen werden, bevor es verwendet werden kann. Die deklarierte Objektvariable hat den speziellen Wert Nothing, der angibt, dass sie nicht auf eine bestimmte Instanz eines Objekts verweist, bis ihr ein Objekt zugewiesen wird. Wenn Sie das Schlüsselwort New in der Deklaration angeben, wird beim ersten Verweis auf das Objekt eine Instanz des Objekts erstellt.

Wenn Sie keinen Datentyp oder Objekttyp angeben und das Modul keine Deftype-Anweisung enthält, ist die Variable als Standard Variant.

Hinweis

Die Static-Anweisung und das Static-Schlüsselwort sind ähnlich, werden jedoch für unterschiedliche Zwecke verwendet. Wenn Sie eine Prozedur mit dem Static-Schlüsselwort deklarieren (wie in Static Sub CountSales ()), wird der Speicherplatz für alle lokalen Variablen innerhalb der Prozedur einmal zugeordnet, und der Wert der Variablen wird für die gesamte Ausführungszeit des Programms beibehalten. Bei nicht statischen Prozeduren wird der Speicher für die Variablen bei jedem Aufruf der Prozedur aufgerufen und beim Beenden der Prozedur freigegeben. Mit der Static-Anweisung werden spezifische Variablen innerhalb von nicht statischen Prozeduren deklariert, damit diese ihren Wert beibehalten, solange das Programm ausgeführt wird.

Beim Initialisieren der Variablen werden numerische Variablen als 0, Zeichenfolgen mit variabler Länge als Zeichenfolge der Länge null ("") und Zeichenfolgen mit fester Länge als mit Nullen angefüllte Zeichenfolge initialisiert. Variant -Variablen werden auf Empty initialisiert. Jedes Element einer Variable mit benutzerdefiniertem Typ wird wie eine einzelne Variable initialisiert.

Hinweis

Wenn Sie Static-Anweisungen innerhalb einer Prozedur verwenden, sollten diese gemeinsam mit Deklarationsanweisungen wie Dim am Anfang der Prozedur stehen.

Beispiel

In diesem Beispiel wird die Static-Anweisung verwendet, um den Wert einer Variablen so lange beizubehalten, wie der Modulcode ausgeführt wird.

' Function definition. 
Function KeepTotal(Number) 
    ' Only the variable Accumulate preserves its value between calls. 
    Static Accumulate 
    Accumulate = Accumulate + Number 
    KeepTotal = Accumulate 
End Function 
 
' Static function definition. 
Static Function MyFunction(Arg1, Arg2, Arg3) 
    ' All local variables preserve value between function calls. 
    Accumulate = Arg1 + Arg2 + Arg3 
    Half = Accumulate / 2 
    MyFunction = Half 
End Function

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.