Excel VBA Variable Scope
In allen Programmiersprachen haben wir Variablenzugriffsspezifizierer, die definieren, von wo aus auf eine definierte Variable zugegriffen werden kann. Excel VBA ist keine Ausnahme. Auch VBA verfügt über Bereichsspezifizierer. Diese Bereichsspezifizierer können verwendet werden, um die Sichtbarkeit / den Bereich einer Variablen in Excel VBA festzulegen.
In Excel VBA gibt es drei Arten von Bereichsspezifizierern:
-
Verfahrensstufe. Privat – Modulebene. Öffentlich – Projektebene === Variablenumfang der VBA-Prozedurebene Auf die Variablen, die innerhalb eines Unterprogramms deklariert sind, kann nur in dieser Prozedur / Funktion zugegriffen werden. Sie haben einen Umfang auf Prozedurebene. Sie werden normalerweise mit dem Schlüsselwort Dim deklariert. Wenn das Modul eine implizite Option ist, wurde die Variable möglicherweise nicht deklariert, sondern nur direkt verwendet.
Im folgenden Beispiel haben wir einen Subroutinenbereichstest mit den Variablen x und y. Wenn wir die erste Unterroutine ausführen, läuft sie perfekt und gibt die Summe von X und Y aus
Option Explicit Sub scopeTest() Dim x, y As Integer ' Procedure level variable in VBA x = 2 y = 3 Debug.Print x + y End Sub Sub sum() x = 5 y = 7 Debug.Print x + y End Sub
Wenn Sie jedoch die Subroutinensumme ausführen, wird der Fehler ausgegeben, dass die Variable nicht deklariert ist. Warum? Da X und Y für die Prozedur scopeTest privat sind und die Subroutinensumme keinen Zugriff darauf hat.
Daher stößt das Sub auf einen Fehler.
VBA Private Variable – Gültigkeitsbereich auf Modulebene Wenn Sie eine Variable deklarieren möchten, auf die im gesamten Modul zugegriffen werden muss, deklarieren Sie diese Variable vor einer Unterroutine oder Funktion oben im Modul als privat.
Die Variablen, die vor einer Unterroutine im Modul deklariert werden, sind standardmäßig Private. Auch wenn Sie sie mit dem Schlüsselwort Dim deklarieren. Um genau zu sein, ist es jedoch ratsam, das Schlüsselwort Private zu verwenden.
Die folgenden beiden Verfahren befinden sich im selben Modul, Modul 1.
Option Explicit 'Module level variable in VBA. Both variables x and y are private to this module. and 'can be accessed from any sub or function within this module. Dim x As Integer Private y As Integer Sub scopeTest() 'This can be accessed from any module in the project x = 2 y = 3 Debug.Print x + y End Sub Private Sub sum() ' This can't be accessed from other modules x = 5 y = 7 Debug.Print x + y End Sub
Die beiden oben genannten Funktionen funktionieren einwandfrei, da die Variablen x und y die privaten Variablen dieses Moduls sind.
Wichtig: Die zuletzt in x und y gespeicherten Werte bleiben bis zum gesamten Modul erhalten. Wenn wir zuerst den sub scopeTest ausführen und die Werte von x und y in der Untersumme nicht initialisieren und ausführen, bleibt der Anfangswert von x und y unverändert.
Die folgende Unterroutine ist in einem separaten Modul, Modul 2, definiert. Wenn ich versuche, von einem anderen Modul aus auf die Variable zuzugreifen, tritt bei der VBA-Prozedur (oder -Funktion) ein Fehler auf.
Aber wenn ich versuche, die Subroutinensumme von Modul 1 in Modul 2 aufzurufen, funktioniert dies perfekt. Verwenden Sie das Schlüsselwort Private vor dem Sub und der Funktion, um Ihre Funktion und Unterprogramme für das Modul privat zu machen.
Hinweis: – Die Variablen, die vor einem Unterprogramm oder einer Funktion in einem Modul deklariert wurden, sind standardmäßig für das Modul privat. Sie können das Privatekeyword verwenden. Die Funktionen und Unterprogramme sind jedoch standardmäßig öffentlich und können von jedem Modul in einem Projekt aufgerufen werden. Um Funktionen und Unterprogramme für das Modul privat zu machen, müssen Sie das Schlüsselwort Private verwenden . === Öffentliche Variablen – Umfang auf Projektebene Wie wir in den obigen Beispielen erfahren haben, sind die Funktionen und Unterprogramme standardmäßig öffentlich und können von jedem Modul aus aufgerufen werden Variablen jedoch nicht. Um eine Variable von einem beliebigen Modul in Excel VBA aus zugänglich zu machen, verwenden wir das Schlüsselwort Public. * Um eine öffentliche Variable in einem Projekt zu deklarieren, haben Sie sie vor einer Funktion oder Unterroutine mit dem Schlüsselwort public oben im Modul deklariert. Der folgende Code ist in Modul 1 geschrieben.
Option Explicit 'Project level variable in VBA. Public x As Integer Public y As Integer Public Sub scopeTest() 'This can be accessed from any module in the project x = 2 y = 3 End Sub Private Sub sum() ' This can't be accessed from other modules x = 5 y = 7 Debug.Print x + y End Sub
Und diese Unterroutine befindet sich in einem anderen Modul, Modul 2.
Option Explicit Sub mul() Call scopeTest 'Call sum ' it won't work as it is private to the module 1 Debug.Print x * y End Sub
Diesmal läuft es perfekt.
Zuerst habe ich das Unterprogramm scopeTest aufgerufen. Da der scopeTest öffentlich ist, wird er aufgerufen. Es initialisiert die Werte von x und y. Als nächstes multiplizieren wir x und y. Da die Unterroutine scopeTest sie mit den Werten 2 und 3 initialisiert hat, erhalten wir 6.
Auf diese Weise können Sie die Variablenbereichsspezifizierer in Excel verwenden, um die Sichtbarkeit von Variablen, Funktionen und Unterroutinen in Excel VBA-Projekten zu steuern.
Ich habe versucht, die Zugriffsspezifizierer von VBA so einfach wie möglich zu erklären. Ich hoffe es war erklärend. Wenn Sie Zweifel an diesem Artikel oder andere Zweifel im Zusammenhang mit VBA haben, fragen Sie mich im Kommentarbereich unten. Ich werde mich freuen, von Ihnen hierher zu kommen.
Verwandte Artikel:
link: / Zellenbereiche-Zeilen-und-Spalten-in-vba-was-ist-der-Unterschied-zwischen-byref-und-byval-Argumenten-vba-Interview-Frage [ByRef- und ByVal-Argumente]
| Wann Ein Argument wird als ByRef-Argument an ein anderes Sub oder eine andere Funktion übergeben. Die Referenz der tatsächlichen Variablen wird gesendet. Alle Änderungen, die an der Kopie der Variablen vorgenommen werden, werden im ursprünglichen Argument wiedergegeben.
link: / files-arbeitsmappe-und-arbeitsblätter-in-vba-lösche-blätter-ohne-bestätigungs-aufforderungen-mit-vba-in-microsoft-excel [lösche blätter ohne bestätigungs-aufforderungen mit VBA in Microsoft Excel]
| Seit Wenn Sie Blätter mit VBA löschen, wissen Sie, was Sie tun. Sie möchten Excel anweisen, diese Warnung nicht anzuzeigen und das verdammte Blatt zu löschen.
Neue Arbeitsmappe mit VBA in Microsoft Excel 2016 hinzufügen und speichern | In diesem Code haben wir zuerst einen Verweis auf ein Arbeitsmappenobjekt erstellt. Und dann haben wir es mit einem neuen Arbeitsmappenobjekt initialisiert. Der Vorteil dieses Ansatzes besteht darin, dass Sie Operationen an dieser neuen Arbeitsmappe problemlos ausführen können. Wie Speichern, Schließen, Löschen usw. Anzeige einer Nachricht ein Die Excel VBA-Statusleiste Die Statusleiste in Excel kann als Codemonitor verwendet werden. Wenn Ihr VBA-Code lang ist und Sie mehrere Aufgaben mit VBA ausführen, deaktivieren Sie häufig die Bildschirmaktualisierung, damit der Bildschirm nicht flackert. Warnmeldungen mit VBA in Microsoft Excel 2016 deaktivieren | Dieser Code deaktiviert nicht nur VBA-Warnungen, sondern erhöht auch die Zeiteffizienz des Codes. Mal sehen, wie.
Beliebte Artikel:
link: / Tastatur-Formel-Verknüpfungen-50-Excel-Verknüpfungen-zur-Steigerung-Ihrer-Produktivität [50 Excel-Verknüpfungen zur Steigerung Ihrer Produktivität]
| Werden Sie schneller bei Ihrer Aufgabe. Mit diesen 50 Verknüpfungen können Sie noch schneller in Excel arbeiten.
link: / formeln-und-funktionen-einführung-der-vlookup-funktion [Die VLOOKUP-Funktion in Excel]
| Dies ist eine der am häufigsten verwendeten und beliebtesten Funktionen von Excel, mit der Werte aus verschiedenen Bereichen und Tabellen gesucht werden. link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016]
| Zählen Sie Werte mit Bedingungen, die diese erstaunliche Funktion verwenden. Sie müssen Ihre Daten nicht filtern, um einen bestimmten Wert zu zählen.
Die Countif-Funktion ist wichtig, um Ihr Dashboard vorzubereiten.
link: / excel-formel-und-funktion-excel-sumif-funktion [Verwendung der SUMIF-Funktion in Excel]
| Dies ist eine weitere wichtige Funktion des Dashboards. Auf diese Weise können Sie Werte unter bestimmten Bedingungen zusammenfassen.