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 das Schlüsselwort Private 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 Schlüsselwort Private 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.