VBA-Basics: Variablen

Variablen sind die Möglichkeit unter VBA, bestimmte Werte wie Zahlen, Texte, Datumsangaben oder auch komplexere Elemente wie Verweise auf Objekte der Benutzeroberfläche der Office-Anwendungen oder auf selbst erstellte Objekte für den Zeitraum der Benutzung zu speichern und wieder abrufen zu können. Kurz gesagt: Mit Variablen merken wir uns verschiedene Dinge, die wir noch mal brauchen können. Dieser Artikel stellt die verschiedenen Basisdatentypen für Variablen vor und zeigt, wie wir diese deklarieren, mit Werten oder Verweisen füllen und diese wieder abfragen. Außerdem gehen wir auch auf den Gültigkeitsbereich, die Gültigkeitsdauer und die Frage der Benennung von Variablen ein.

Voraussetzung

Im ersten Teil dieser Artikelreihe namens VBA-Basics: Schnellstart (www.vbentwickler.de/318) haben wir gezeigt, wie Du ein Modul in einem VBA-Projekt einer Office-Anwendung anlegst.

Im vorliegenden Artikel bauen wir darauf auf und gehen davon aus, dass Du in irgendeiner Office-Anwendung bereits ein Modul erstellt hast, das wir zum Experimentieren mit Variablen nutzen können.

Was sind Variablen?

Falls Du noch gar nicht weißt, was eine Variable ist, hier eine Erklärung: Eine Variable ist eine Art Behälter für einen Wert, dem wir einen Namen geben, um darüber den Behälter füllen und auslesen zu können.

Neben dem Namen legen wir in der Regel auch noch fest, welcher Art die Werte sind, welche die Variable aufnehmen können soll, also zum Beispiel Texte, Zahlen verschiedener Wertebereiche und Genauigkeiten, Datumsangaben oder Ja-/Nein-Werte.

Variablen können aber auch komplexe Objekte enthalten. Diese werden dann faktisch nicht in der Variablen gespeichert, sondern in der Variable landet nur ein Verweis auf die Speicherstelle des komplexen Objekts. Doch dazu später mehr.

Variable deklarieren

Damit wir sehen, was eine Variable kann und was nötig ist, um diese überhaupt zu nutzen, verwenden wir das folgende Beispiel. Die wichtigste Voraussetzung für die Verwendung einer Variablen ist die Deklaration. Durch die Deklaration legen wir für die Variable den Namen fest, die zulässigen Werte beziehungsweise den Datentyp sowie den Gültigkeitsbereich und in gewisser Weise auch die Gültigkeitsdauer.

Modul als Voraussetzung

Im ersten Teil dieser Artikelreihe haben wir schon gesehen, wie wir ein Modul zu einem VBA-Projekt hinzufügen. Ein solches Modul benötigen wir auf jeden Fall, um eine Variable zu deklarieren – wo sonst sollen wir diese hinschreiben?

String-Variable deklarieren

Also schreiben wir einfach einmal die erste Variable mit dem Datentyp String in dieses Modul. Diese Variable soll den Namen strText erhalten:

Dim strText As String

Dies liefert die folgenden Informationen:

  • Die Dim-Anweisung gibt an, dass nun die Deklaration einer Variablen folgt.
  • strText ist der Name der Variablen.
  • Das Schlüsselwort As leitet die Angabe des Datentyps ein.
  • String ist der Datentyp der Variablen. Das heißt, die Variable kann Zeichenketten aufnehmen.

Was können wir nun mit dieser Variablen anfangen? Wir können sie beispielsweise mit einem Wert füllen, zum Beispiel der Zeichenkette Beispieltext.

Da es sich hierbei um eine Zeichenkette handelt, müssen wir sie in Anführungszeichen einfassen. Dann können wir den Wert im Direktbereich des VBA-Editors der Variablen strText zuweisen:

strText = "Beispieltext"

Danach lassen wir uns den Wert im Direktbereich mit der Debug.Print-Anweisung ausgeben:

Debug.Print strText

Das Ergebnis sehen wir in Bild 1.

Testen einer Variablen

Bild 1: Testen einer Variablen

Private oder Public?

Um den Gültigkeitsbereich einer Variablen festzulegen, haben wir verschiedene Möglichkeiten. Die erste ist der Ort, an dem wir die Variable festlegen.

Die zweite ist das Schlüsselwort, mit dem wir die Deklaration einleiten. Wir können grundsätzlich zwischen den folgenden drei Gültigkeitsbereichen unterscheiden:

  • Innerhalb einer Prozedur
  • Innerhalb eines Moduls
  • Im kompletten VBA-Projekt

Variablen nur innerhalb von Prozeduren nutzen

Wenn wir eine Variable nur innerhalb einer Prozedur verwenden wollen, dann deklarieren wir sie genau in dieser Prozedur, also beispielsweise wie folgt:

Public Sub ProzedurMitVariable()
     Dim strProzedur As String
End Sub

Wir können nun nur noch innerhalb der Prozedur auf diese Variable zugreifen – beispielsweise, indem wir diese mit einem Wert füllen und den Wert der Variablen im Direktbereich ausgeben:

Public Sub ProzedurMitVariable()
     Dim strProzedur As String
     strProzedur = "Beispieltext"
     Debug.Print strProzedur
End Sub

Nun könntest Du versuchen, die innerhalb dieser Prozedur deklarierte Variable vom Direktbereich aus zu füllen und abzurufen, indem Du diese im Direktbereich ausgibst:

strProzedur = "Beispieltext"
Debug.Print strProzedur

Das funktioniert zwar, aber der Direktbereich hat eigene Regeln, was die Gültigkeit von Elementen angeht. Viel wichtiger ist, dass wir diese Variable nicht von anderen Prozeduren aus setzen oder lesen können.

Das probieren wir aus, indem wir in einer anderen Prozedur im gleichen Modul versuchen, diese Variable zu setzen:

Public Sub Zugriffsversuch()
     strProzedur = "Noch ein Text"
End Sub

Führen wir diese Prozedur aus, erhalten wir die Fehlermeldung aus Bild 2. Der Gültigkeitsbereich der Variablen strProzedur ist also auf die Prozedur selbst beschränkt.

Versuch, auf eine private Variable zuzugreifen

Bild 2: Versuch, auf eine private Variable zuzugreifen

Variablen nur innerhalb eines Moduls nutzen

Wenn wir eine Variable in einer Prozedur setzen und diese in einer anderen Prozedur auslesen wollen, dann können wir die Variable weder in der einen noch in der anderen Prozedur deklarieren. Vielmehr deklarieren wir diese dann im allgemeinen Teil des Moduls, was bedeutet: Hinter der letzten Option…-Anweisung und vor der ersten Prozedur.

Wir deklarieren die Variable wie folgt:

Dim strModulweit As String

Die erste Prozedur im gleichen Modul soll die Variable mit einem Wert füllen:

Public Sub VariableSetzen()
     strModulweit = "Modulweit"
End Sub

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins DATENBANKENTWICKLER:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar