Wird eine Variable innerhalb einer Prozedur deklariert, kann nur der Code innerhalb dieser Prozedur auf den Wert zugreifen oder ändern. Manchmal soll die Variable jedoch in allen Prozeduren oder in allen Prozeduren in einer Arbeitsmappe zur Verfügung stehen. Die Art der Verfügbarkeit einer Variablen wird bei der Deklaration festgelegt. Es gibt drei mögliche Gültigkeitsbereiche für eine Variable:
- Innerhalb einer Prozedur Dim - Lokal
- Am Anfang des Modules Dim oder Private - Modulebene
- Am Anfang des Moduls Public - Ã?ffentlich
Lokal
Die Variable wird nur innerhalb der umgebenen Prozedur erkannt und eignet sich für temporäre Berechnungen. Wird ein Variablen-Name in mehreren Prozeduren benutzt, ist die Variable nur lokal gültig. Gleiche Variablen-Namen in anderen Prozeduren bleiben unverändert vom Wert. Jede Prozedur erkennt nur ihre eigene Variablen.
Sub Test()
Dim MeineVariable
...
...
End Sub
Sub Test2()
Dim MeineVariable
'(Lokale Variable mit gleichem Namen wie in Prozedur Test,
'entspricht nicht der Variablen von Prozedur Test)
...
...
End Sub
Soll im Beispiel in der Routine Test2 auch die Variable MeineVariable verwendet werden, kann sie bei dieser Art der Deklaration übergeben werden, wenn z. B. die zweite Routine durch die erste aufgerufen werden soll:
Sub Test()
Dim MeineVariable
...
...
Test2 MeineVariable
End Sub
Sub Test2(ByVal MeineVariable As String)
'Hier kann MeineVariable weiterverwendet werden.
End Sub
Modulebene
Variablen auf Modulebene haben aus allen Prozeduren innerhalb eines Moduls Gültigkeit. Variablen aus anderen Modulen haben keine Gültigkeit.
Dim MeineVariable '(Variable auf Modulebene)
Private MeineVariable1
Sub Test()
...
...
...
End Sub
Ã?ffentlich
Variablen, die mit Public deklariert wurden, haben die umfassendste Gültigkeit. �ffentliche Variablen stehen jeder Prozedur, die sich in einem beliebigen Modul der jeweiligen Arbeitsmappe befinden kann, zur Verfügung. �ffentliche Variablen werden genau wie Variablen auf Modulebene allgemeiner Module vor den Prozedurdefinitionen deklariert.
Public MeineVariable 'Ã?ffentliche Variable
Public MeineVariable1
Sub Test()
...
...
...
End Sub
Tipp
Wer viel mit Variablen, die immer zur Verfügung stehen müssen, arbeitet, sollte sich mit Klassenmodulen beschäftigen. Damit kann man eigene Objekte erstellen, denen man Eigenschaften zuweist, die dann immer zur Verfügung stehen. So könnte ein Autohändler zum Beispiel das Objekt Auto erstellen, für dieses Objekt die Eigenschaft Farbe. Im Code braucht man dann nur noch zu schreiben:
Auto.Farbe = "rot"
...
...
MsgBox Auto.Farbe