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:

Anm.: nur eine kleine Linkauswahl ohne Anspruch auf Vollständigkeit ;-)

Statische/Static Variablen bleiben nach Laufzeitende erhalten!

Quellcode 6 Static Definition für Variable
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!

Quellcode 7 Sichtbarkeit über Modulgrenzen
' 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!

Quellcode 8 Nutzung von Private für Sub Routinen
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