Variablen und Konstanten

Datentypen

VBA kennt unterschiedliche Datentypen. Sie unterscheiden sich nach Speicherbedarf, Wertebereich und Einsatzzweck.

Beispiele für Datentypen sind:

Benutzerdefinierte Datentypen

VBA bietet die Möglichkeit, eigene Datentypen zu definieren. Dadurch wird es möglich, eigene Datenstrukturen zu schaffen und zu verwenden. Benutzerdefinierte Datentypen werden mit der Type -Anweisung definieren. Die Type-Anweisung muss am Anfang eines Moduls stehen. Die Syntax ist
   [Private | Public] Type VarName
   Elementname [([Indizes])] As Typ
   [Elementname [([Indizes])] As Typ]
   . . .
  End Type

Beispiel:

Option Explicit
Private Type Tperson
   Name As String
   Vorname As String
   Alter As Integer
End Type
'
Sub test_type()
Dim person1 As Tperson, p_vec(1 To 10) As Tperson
Dim i As Integer
'
person1.Name = "Mueller"
person1.Vorname = "Michael"
person1.Alter = 32
Debug.Print "Name: "; person1.Name, "Vorname: "; person1.Vorname, "Alter: "; person1.Alter
Debug.Print
'
p_vec(1).Name = "Schmidt"
p_vec(1).Vorname = "Manfred"
p_vec(1).Alter = 20
'
p_vec(2).Name = "Mayer"
p_vec(2).Vorname = "Max"
p_vec(2).Alter = 25
'
p_vec(3).Name = "Mueller"
p_vec(3).Vorname = "Michael"
p_vec(3).Alter = 32
'
For i = 1 To 3
    Debug.Print "Name: "; p_vec(i).Name, "Vorname: "; p_vec(i).Vorname, "Alter: "; p_vec(i).Alter
Next i
'
End Sub

Variablen und Konstanten

Bei Variablen handelt es sich um dynamische Speicherplätze. Deren Inhalt kann sich während der Laufzeit verändern.
Konstanten sind statische Werte. Sie werden einmal definiert und ändern sich während des Programmablaufs nicht.

Regeln für die Namen von Variablen und Konstanten

  • Das erste Zeichen muss ein Buchstabe sein.
  • Erlaubte Zeichen sind: Buchstaben, Zahlen und Unterstrich
  • Leerzeichen, Punkt (.), Ausrufezeichen (!) oder die Zeichen @, &, $, *, # sind nicht erlaubt.
  • Die Länge des Namens darf 255 Zeichen nicht überschreiten.
  • VBA unterscheidet nicht zwischen Groß- und Kleinbuchstaben.

Deklaration

Bevor man eine Variable in einem Programm verwendet, empfiehlt es sich, die Variablen zu deklarieren. Dabei wird der Variablen ein Datentyp zugewiesen. Dies erfolgt in der Regel mit einer Dim-Anweisung, z. B.
Dim i as integer
Wenn eine Variable nicht deklariert wird, wird der voreingestellte Datentype „Variant“ verwendet.

Vorteil der Deklaration:
Der Vorteil der Deklaration von Datentypen besteht darin, Fehler im Code zu finden. Da ich schon ungezählte Code Fehler mit der Deklaration von Variablen gefunden habe, empfehle ich, die Variablen immer zu deklarieren.
Die Deklaration der Variablen in einem Modul kann man mit der Anweisung
Option Explicit
zu Beginn eines Moduls erzwingen.

Variablen können an verschiedenen Stellen im Code deklariert werden. VBA unterscheidet zwischen lokalen Variablen und globalen Variablen:
– Deklaration innerhalb einer „Sub“ oder „Function“ Prozedur (lokale Variable):
    Die Variable ist ausschließlich für diese Prozedur gültig und ist aus anderen Prozeduren heraus nicht ansprechbar.
– Deklaration im Kopf des Moduls (globale Variable):
    Die Variable gilt für alle „Sub“ oder „Function“ Prozeduren dieses Moduls.
– Deklaration im Kopf des Moduls als Public (globale Variable):
    Die Variable gilt für alle „Sub“ oder „Function“ Prozeduren in der Excel Datei.

' Makros zum Testen von Variablendeklarationen
' Deklaration von zwei globalen Variablen auf Modulebene
Dim k As Integer
Dim x As Double
' Makros zum Testen
Sub MakroEins()
' Deklaration von zwei lokalen Variablen
Dim i As Integer
Dim y As Double
' Zuweisen von Werten
k = 1
x = 3.5
i = 3
y = 1.3
' Variablen im Direktfenster ausgeben
Debug.Print k
Debug.Print x
Debug.Print i
Debug.Print y
End Sub
Sub MakroZwei()
' Variablen im Direktfenster ausgeben
Debug.Print k
Debug.Print x
End Sub

Mehrere Variablen in einer Zeile deklarieren

VBA erlaubt es,  mehrere Variablen in einer Zeile zu deklarieren. Die Deklarationen in der Zeile werden durch Kommas getrennt.

' Makros zum Testen von Variablendeklarationen
' Deklaration von zwei globalen Variablen auf Modulebene
Dim k As Integer, x As Double
' Makros zum Testen
Sub MakroEins()
' Deklaration von zwei lokalen Variablen
Dim i As Integer, y As Double
' Zuweisen von Werten
k = 1
x = 3.5
i = 3
y = 1.3
' Variablen im Direktfenster ausgeben
Debug.Print k
Debug.Print x
Debug.Print i
Debug.Print y
End Sub
Sub MakroZwei()
' Variablen im Direktfenster ausgeben
Debug.Print k
Debug.Print x
End Sub

Konstanten

Der Wert einer Konstanten ändert sich im Programm nicht. Konstanten werden mit „Const“ deklariert und ihnen wird in der Deklaration ein Wert zugewiesen. In der Deklaration kann man auch den Datentyp angeben. Beispiele für Konstanten sind:
Const Pi = 3.14
Const Pi as Double = 3.14
Const MwSt = 0.19
Const MwSt as Double = 0.19

Geltungsbereiche

  • Lokale Variable und Konstanten
    Variablen oder Konstanten, die innerhalb einer Prozedur deklariert werden, sind nur in dieser Prozedur gültig. Der Inhalt dieser Variablen oder Konstanten steht in anderen Prozeduren nicht zur Verfügung.
  • Statische Variablen
    Lokale Variablen verlieren ihren Inhalt, nachdem die Prozedur beendet wurde. Wird in der Deklaration das Schlüsselwort „Dim“ durch „Static“ ersetzt, bleibt der Wert der Variablen nach dem Ende der Prozedur erhalten. Wenn die Prozedur mehrmals ausgeführt wird und kann die Variable immer weiterverwendet werden.
  • Globale Variable und Konstanten
    Globale Variablen oder Konstanten werden außerhalb einer Prozedur am Anfang eines Moduls deklariert.
    Wird in der Deklaration das Schlüsselwort „Dim“ verwendet oder wird in der Deklaration das Schlüsselwort „Dim“ durch „Private“ ersetzt, gelten die Variablen oder Konstanten nur innerhalb des Moduls, in dem sie deklariert werden.
    Wird in der Deklaration das Schlüsselwort „Dim“ durch „Public“ ersetzt, gelten die Variablen oder Konstantenauf in allen Modulen.
    Beispiel für globale Variable
Option Explicit
Public strZeichenfolge As String
Dim strZeichenfolgePrivat As String
Sub ZeichenfolgeErstellen()
strZeichenfolge = "Hallo Welt"
strZeichenfolgePrivat = "Hello World"
End Sub
Sub ZeichenfolgeAusgeben()
Debug.Print strZeichenfolge
Debug.Print strZeichenfolgePrivat
End Sub

Namenskonventionen

Der Zweck einer Namenskonvention besteht darin, eine Richtlinie für die Benennung von Variablen, Konstanten und anderen VBA-Komponenten bereitzustellen. Namenskonventionen sind nicht verpflichtend aber sie erleichtern es, den Code zu verstehen und Fehler zu vermeiden. Ein verbreitetes Beispiel für eine Namenskonvention ist die Reddick-VBA-Namenskonvention (RVBA). Gemäß der Reddick-VBA-Namenskonvention wird ein Objektname in VBA wie folgt aufgebaut
     [Präfix] Typkürzel [Basisname[Suffix]]
Die eckigen Klammern bezeichnen optionale Teile des Objektnamens.

  • Präfix:
    Ergänzt das Typkürzel um zusätzliche Informationen. Es wird in Kleinbuchstaben angegeben.
    Beispielsweise wird für Datenfelder (engl. array) ein „a“ als erster Buchstabe vor dem Typkürzel verwendet.
  • Typkürzel (engl. Tag):
    Besteht aus einer kurzen Folge von Kleinbuchstaben, die den Typ des Objektes angeben.
  • Basisname:
    Besteht aus einem oder mehreren Wörtern, die beschreiben, was das Objekt repräsentiert. Der erste Buchstabe jedes Wortes wird groß geschrieben.
  • Suffix:
    Bietet zusätzliche Informationen zur Bedeutung des Basisnamens. Der erste Buchstabe jedes Wortes wird großgeschrieben.

Kennzeichnung von Datentypen mit Typkürzeln

Kennzeichnung von Konstanten

Konstanten werden durch den an das Typkürzel gehängten Buchstaben “c“ gekennzeichnet, z. B.
Const dblcPi as Double = 3.1415

Kennzeichnung von Datenfeldern (engl. Arrays)

Für Datenfelder (engl. Arrays) wird das Präfix „a“ verwendet. Beispiele
aintFontSizes
astrNames

Kennzeichnung des Gültigkeitsbereichs

Strings

Der Datentyp „String“ wird für Zeichenfolgen verwendet. Eine Zeichenfolge ist ein Stück Text. Ich habe sehr viel mit Strings gearbeitet und finde sie sehr wichtig.

In VBA gibt es zwei Arten von Strings:
String mit einer festen Länge:
  Beispiel für eine Deklaration
       Dim MeinString as String * 30
       Damit wird ein String mit 30 Zeichen deklariert.
   Die maximale Länge beträgt 65 526 Zeichen.
String mit einer variablen Länge:
  Beispiel für eine Deklaration
       Dim MeinString as String
   Die maximale Länge sind 2 Milliarden Zeichen.

Funktionen zum Bearbeiten von Strings:
In VBA gibt es mehrere Funktionen für die Bearbeitung von Strings. Die wichtigsten Funktionen sind:
– Mit + oder & lassen sich Strings Verketten
Left(text,Anzahl_von_Zeichen): damit  erhält man die vorgegebene Anzahl von Zeichen von Links.
Right(text,Anzahl_von_Zeichen): damit erhält man die vorgegebene Anzahl von Zeichen von Rechts.
Mid(text, start, länge): damit lassen sich Teile einer Zeichenfolge extrahieren. „start“ ist die Position des Startzeichens und „länge“ ist die gewünschte Länge der extrahierten Zeichenfolge.
Len(text): damit erhät man die Länge der Zeichenfolge

Einer Variablen einen Wert zuweisen

Die Syntax einer Zuweisung lautet
Variable = Ausdruck

Beispiele

dblPi = 3.1415
dblx = 4*3
strName = „Maier“

Operatoren

Variable werden in VBA oft in Ausdrücken verwendet. Je nach Art des Ausdruck gibt es hierfür unterschiedliche Operatoren.

Operatoren für arithmetische Ausdrücke

Operatoren für Zeichenfolgenausdrücke (engl. Strings)

Operatoren für Vergleiche in Bedingungen

Operatoren for logische Vergleiche in Bedingungen

Schreibe einen Kommentar