Inhaltsverzeichnis
ToggleDatentypen
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.