Gültigkeitsbereich von Variablen in Excel VBA
In diesem Tutorial zeige ich wie es mit dem Gültigkeitsbereich von Variablen in Excel VBA aussieht. Ihr werdet sehen in wie weit lokale, modulweite und globale Variablen sichtbar sind. Vor allem geht es um Variablen die nur in der Prozedur, im ganzen Modul oder im ganzen Projekt sichtbar sind
Das Startvideo der VBA Tutorial Serie auf YouTube findet Ihr hier
Die Playlist meiner VBA Tutorial Serie auf YouTube findet Ihr hier
Achtung:
Benutzt zum Üben eine separate Tabelle für Testzwecke oder eine Kopie des Originals damit Euch keine Daten verloren gehen.
Video zu diesem Tutorial:
Lokale Variable in Excel VBA
Eine lokale Variable, also eine Variable die Ihr innerhalb einer Prozedur deklariert, hat ihren Gültigkeitsbereich nur innerhalb dieser Prozedur. Diese ist auch nicht außerhalb zu sehen. Das heißt Ihr könntet in sämtlichen Modulen auch eine Variable mit dem gleichen Namen erstellen. In einer anderen Prozedur ist diese dann auch nicht bekannt. Würdet Ihr versuchen von einer anderen Prozedur auf die Variable zuzugreifen bekommt Ihr eine Fehlermeldung allerdings auch nur wenn Ihr Option Explicit benutzt (meine absolute Empfehlung). Wenn Ihr Option Explicit nicht benutzt und versucht auf diese Variable zuzugreifen, dann bekommt Ihr keine Fehlermeldung und die Variable bleibt leer. Das kann in schlimmen Fällen zu schwerwiegenden Berechnungsfehlern führen.
In diesem Beispiel seht Ihr eine lokale Variable.
Option Explicit Sub LokaleVariableTutorial() Dim lokaleVariable As String lokaleVariable = "Lokale Variable" Range("A1").Value = lokaleVariable End Sub
Modulweite Variable in Excel VBA
Wenn Ihr jetzt eine Variable deklarieren wollt, die in allen Prozeduren des gleichen Moduls sichtbar sein soll, dann müsst Ihr dies außerhalb, üblicherweise direkt unter Option Explicit machen.
Ihr könnt diese mit Dim oder auch Private deklarieren. Microsoft empfiehlt Private damit sofort ersichtlich ist, dass sich die Variable nur auf das Modul beschränkt.
Option Explicit Dim modulweiteVariable As String Sub Prozedur1() modulweiteVariable = "Modulweite Variable" Range("A1").Value = modulweiteVariable 'Call Prozedur2 End Sub Sub Prozedur2() Range("B1").Value = modulweiteVariable End Sub
Globale Variable in Excel VBA
Jetzt kommt es natürlich vor, dass man aus verschiedensten Gründen, mehrere Module benutzt und auch von einem anderen Modul aus, auf die Variable zugreifen möchte. Das geht ebenfalls. Hier könnt Ihr die Variable, so wie im folgenden Beispiel gezeigt, mit Pubic deklarieren. Es gibt auch noch Global, aber diese Variante ist älter und auch nicht so weitreichend. Deshalb benutzt für Projektweite Variablen am Besten immer Public.
Im folgenden Beispiel habe ich zwei Module benutzt um das zu demonstrieren. Das ganze wird von der Prozedur 1 gestartet. Über Call werden Prozedur 2 und 3 aufgerufen und geben dann den Inhalt der projektweiten Variable in den Zellen B1 und C1 aus.
Modul 1:
Option Explicit Public projektweiteVariable As String Sub Prozedur1() projektweiteVariable = "Projektweite Variable" Range("A1").Value = projektweiteVariable Call Prozedur2 Call Prozedur3 End Sub Sub Prozedur2() Range("B1").Value = projektweiteVariable End Sub
Modul 2:
Option Explicit Sub Prozedur3() Range("C1").Value = projektweiteVariable End Sub
Das könnte Dich auch interessieren
- Arbeitsmappe erstellen und speichern in Excel VBA
- Auf Zellen zugreifen mit Range in Excel VBA
- Eine eigene Funktion erstellen ganz einfach (Excel)
- Excel VBA Kommentare schreiben
- Mit Cells die Zelle Tabelle Arbeitsmappe selektieren in Excel VBA
- Offset - Verschieben der aktuellen Position in VBA
- Option Explicit benutzen oder nicht in Excel VBA
- Select Case Verzweigung in Excel VBA
- Tabellenblätter positionsgenau hinzufügen in Excel VBA
- Verschachtelte For Next Schleife in Excel VBA
- Zugriff auf Arbeitsmappen und Tabellen in Excel VBA