VBA (Visual Basic for Applications) ist die Programmiersprache, die in Microsoft Access steckt. Damit automatisierst du alles, wofür die Oberfläche zu langsam oder zu starr ist: Daten prüfen, Formulare steuern, Berichte erzeugen, Importe fahren.
Diese Lektion bringt dich von null bis zur ersten laufenden Prozedur.
Den VBA-Editor öffnen
Der VBA-Editor (kurz VBE) ist ein eigenes Fenster innerhalb von Access. Du erreichst ihn auf zwei Wegen:
- Tastenkürzel
Alt+F11— funktioniert überall in Access. - Über das Menüband: Datenbanktools → Visual Basic.
Damit du Code-Fehler früh siehst, aktiviere einmalig die automatische Variablen-
prüfung: Extras → Optionen → Variablendeklaration erforderlich. Access setzt
dann in jedes neue Modul die Zeile Option Explicit — die zwingt dich, jede
Variable zu deklarieren, und erspart dir stundenlange Tippfehler-Suche.
Ein Modul anlegen
Code lebt in Modulen. Ein Standardmodul legst du im VBE so an:
Einfügen → Modul. Links im Projekt-Explorer taucht Modul1 auf.
Option Explicit
Public Sub Willkommen()
MsgBox "Hallo aus VBA!", vbInformation, "Access"
End Sub
Zwei Dinge zum Merken:
- Eine
Subist eine Prozedur, die etwas tut, aber keinen Wert zurückgibt. Publicmacht sie von überall aufrufbar.Privatewürde sie auf dieses Modul beschränken.
Ausführen
Setz den Cursor irgendwo in die Prozedur und drück F5 (oder Menü Ausführen →
Sub/UserForm ausführen). Es erscheint eine Meldungsbox — deine erste laufende
Automatisierung.
Werte zurückgeben: die Function
Wenn du ein Ergebnis berechnen willst, nimmst du eine Function statt einer
Sub. Sie gibt einen Wert zurück, indem du dem Funktionsnamen etwas zuweist:
Public Function Netto(ByVal brutto As Double, ByVal satz As Double) As Double
' satz z. B. 0.19 für 19 % MwSt.
Netto = brutto / (1 + satz)
End Function
Solche Funktionen kannst du sogar direkt in Abfragen oder Formular-Steuerelementen verwenden — Access kennt sie überall im Datenbankprojekt.
Das Direktfenster: dein Spielplatz
Mit Strg + G öffnest du das Direktfenster (Immediate Window). Dort testest
du Ausdrücke sofort, ohne extra Prozedur. Ein ? steht für „gib das Ergebnis aus":
? Netto(119, 0.19)
' 100
Und aus dem Code heraus schreibst du mit Debug.Print Werte dorthin — das ist die
schnellste Art, einem Ablauf beim Denken zuzuschauen:
Public Sub ZaehleHoch()
Dim i As Long
For i = 1 To 5
Debug.Print "Schritt", i
Next i
End Sub
Zusammengefasst
- Editor:
Alt+F11, Direktfenster:Strg+G, Ausführen:F5. Option Explicitimmer an — es fängt Tippfehler ab.Subtut etwas,Functionliefert einen Wert zurück.Debug.Printist dein bester Freund beim Nachvollziehen.
In der nächsten Lektion machen wir aus deinem Code etwas, das du versionieren und mit echten Werkzeugen bearbeiten kannst — statt ihn in Access eingesperrt zu lassen.