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:
Bestandteil | 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 mit 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. |
Hinweise
Nachdem der Modulcode ausgeführt wird, 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 die Neue Schlüsselwort (keyword) 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 bis zum Zuweisen eines Objekts den speziellen Wert Nothing, der angibt, dass sie auf keine bestimmte instance eines Objekts verweist. 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 mithilfe der statischen Schlüsselwort (keyword) 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.