Variablen¶
VBA Variablen werden mit dem Wort Dim deklariert.
Tipp
Bitte Sonderzeichen und natürlich Leerzeichen ;-) vermeiden.
lowerCamelCase Schreibweise empfohlen:
intBeispielVar
Es wird die Nutzung eines Prefix empfohlen - hier: int für Integer-Variable.
Bitte die Variablen am Anfang der Sub-Routinen deklarieren (lokale Variablen).
Beispielhafte Prefixes für die Datentypen:
bool Boolean
byte Byte
cur Currency
dtm Date
dec Decimal
dbl Double
int Integer
lng Long
obj Object
sng Single
str String
var Variant
rng Range
wkb Workbook
Speziell: Typ Enum
Übersicht zu Variablentypen: (Beachten: VB weicht teils von VBA ab; z.B. decimal not supported, …)
Beispielhafte Links:
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/data-type-summary
https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/data-types/
https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/dim-statement
Anm.: nur eine kleine Linkauswahl ohne Anspruch auf Vollständigkeit ;-)
Statische/Static Variablen bleiben nach Laufzeitende erhalten!
Sub VariablenInhaltBleibtBestehen()
Static lngAufrufe As Long
lngAufrufe = lngAufrufe + 1
MsgBox "Makro wurde " & lngAufrufe & " Mal ausgeführt!"
End Sub
Öffentliche/Public Variablen sind auch über Modulgrenzen hinweg nutzbar!
' eigenes Modul 01
Option Explicit
Public dteStartzeit As Date
Sub StartZeitSetzen()
dteStartzeit = Now
End Sub
' eigenes Modul 02
Option Explicit
Sub StartzeitAbfragen()
MsgBox dteStartzeit
End Sub
Private/Private Variablen sind nur in ihrem Modul verfügbar!
Private strPasswort As String
Und wenn wir das Signalwort Private auf die Sub-Routinen anwenden
erhalten wir die Möglichkeit den Code in Sichtbarkeit der Makro Anzeige
zu beeinflussen.
Nur die letzte Routine ist in Excel Makros sichtbar!
Option Explicit
Private umfang As Single
Private laenge As Single
Private breite As Single
Private Const faktor = 2
Private Sub BerechneUmfang()
' Umfang eines Rechtecks nach der Formel u = 2*(a+b) bestimmen
umfang = faktor * (laenge + breite)
End Sub
Private Sub EingabeDialog()
' Eingabewerte ermitteln
laenge = InputBox("Bitte geben Sie die Länge des Rechtecks ein: ", "Eingabe", 10)
breite = InputBox("Bitte geben Sie die Breite des Rechtecks ein: ", "Eingabe", 5)
End Sub
Sub BerechnungUmfang()
' startet den Eingabedialog und die Berechnung
EingabeDialog
BerechneUmfang
MsgBox "Der Umfang des Rechtecks beträgt " & umfang & " Meter.", vbInformation, "Ausgabe"
End Sub