Grundlegendes zu Bereichen und Sichtbarkeit
Der Gültigkeitsbereich bezieht sich auf die Verfügbarkeit von Variablen, Konstanten oder Prozeduren für die Verwendung durch eine andere Prozedur. Es gibt drei Ebenen des Gültigkeitsbereichs: Prozedurebene, private Modulebene und öffentliche Modulebene.
Wenn Sie eine Variable deklarieren, bestimmen Sie ihren Gültigkeitsbereich. Es empfiehlt sich, alle Variablen explizit zu deklarieren, um Fehler aufgrund von Namenskonflikten zwischen Variablen unterschiedlicher Gültigkeitsbereiche zu vermeiden.
Bereich auf Prozedurebene
Eine Variable oder Konstante, die in einer Prozedur definiert wird, ist außerhalb der Prozedur nicht sichtbar. Sie kann nur von der Prozedur verwendet werden, die die Variablendeklaration enthält. Im folgenden Beispiel zeigt die erste Prozedur ein Meldungsfeld an, das eine Zeichenfolge enthält. Die zweite Prozedur zeigt ein leeres Meldungsfeld an, da sich die Variable in der ersten Prozedur befindet.
Sub LocalVariable()
Dim strMsg As String
strMsg = "This variable can't be used outside this procedure."
MsgBox strMsg
End Sub
Sub OutsideScope()
MsgBox strMsg
End Sub
Privater Bereich auf Modulebene
Sie können Variablen und Konstanten auf Modulebene im Abschnitt Deklarationen eines Moduls definieren. Variablen auf Modulebene können entweder öffentlich oder privat sein. Öffentliche Variablen stehen allen Prozeduren in allen Modulen in einem Projekt zur Verfügung; private Variablen sind nur für Prozeduren in diesem Modul verfügbar. Standardmäßig sind Variablen, die mit der Dim-Anweisung im Abschnitt Deklarationen deklariert werden, als privat definiert. Wenn Sie der Variablen jedoch die private Schlüsselwort (keyword) voranstellen, ist der Bereich in Ihrem Code offensichtlich.
Im folgenden Beispiel ist die Zeichenfolgenvariable strMsg
für alle im Modul definierten Prozeduren verfügbar. Wenn die zweite Prozedur aufgerufen wird, wird der Inhalt der Zeichenfolgenvariablen strMsg
in einem Dialogfeld angezeigt.
' Add following to Declarations section of module.
Private strMsg As String
Sub InitializePrivateVariable()
strMsg = "This variable can't be used outside this module."
End Sub
Sub UsePrivateVariable()
MsgBox strMsg
End Sub
Hinweis
Öffentliche Prozeduren in einem Standardmodul oder Klassenmodul sind für jedes verweisende Projekt verfügbar. Um den Umfang aller Prozeduren in einem Modul auf das aktuelle Projekt zu beschränken, fügen Sie dem Abschnitt Deklarationen des Moduls eine Option Private Module-Anweisung hinzu. Öffentliche Variablen und Prozeduren sind weiterhin für andere Prozeduren im aktuellen Projekt verfügbar, nicht jedoch für verweisende Projekte.
Öffentlicher Bereich auf Modulebene
Wenn Sie eine Variable auf Modulebene als öffentlich erklären, ist sie für alle Prozeduren im Projekt verfügbar. Im folgenden Beispiel kann die Zeichenfolgenvariable von jeder Prozedur in allen Modulen des Projekts verwendet werden.
' Include in Declarations section of module.
Public strMsg As String
Alle Prozeduren sind standardmäßig öffentlich, mit Ausnahme von Ereignisprozeduren. Wenn Visual Basic eine Ereignisprozedur erstellt, wird das SchlüsselwortPrivate automatisch vor der Prozedurdeklaration eingefügt. Für alle anderen Prozeduren müssen Sie die Prozedur explizit mit dem privaten Schlüsselwort (keyword) deklarieren, wenn sie nicht öffentlich sein soll.
Verwenden Sie öffentliche Prozeduren, Variablen und Konstanten, die in Standardmodulen oder Klassenmodulen aus verweisenden Projekten definiert sind. Sie müssen jedoch zuerst einen Verweis auf das Projekt festlegen, in dem sie definiert sind.
Öffentliche Prozeduren, Variablen und Konstanten, die in anderen als Standard- oder Klassenmodulen definiert sind, z. B. Formular- oder Berichtsmodule, sind für Verweisende Projekte nicht verfügbar, da diese Module für das Projekt, in dem sie sich befinden, privat sind.
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.