Programme, die immer nur stur von oben nach unten durchlaufen, sind selten nützlich. Erst wenn Code auf unterschiedliche Situationen unterschiedlich reagieren kann, wird er wirklich brauchbar. Genau dafür sind Bedingungen da: Sie ermöglichen es, den Programmfluss abhängig von Werten und Zuständen in verschiedene Richtungen zu lenken. In VBA stehen dafür zwei Konstrukte zur Verfügung – das If…Then…Else-Konstrukt für einfache bis mittlere Verzweigungen und Select Case für Situationen, in denen man einen Wert gegen viele mögliche Ausprägungen prüfen möchte. In diesem Artikel zeigen wir, wie beide funktionieren, wann man welches einsetzt und worauf man dabei achten sollte.
Was ist eine Bedingung?
Eine Bedingung ist ein Ausdruck, der entweder wahr (True) oder falsch (False) ergibt. VBA wertet diesen Ausdruck aus und führt dann je nach Ergebnis unterschiedliche Codeabschnitte aus.
Das klingt abstrakt, ist aber im Alltag sofort vertraut: „Wenn der Lagerbestand unter 10 fällt, dann eine Meldung ausgeben“ oder „Wenn das Feld Nachname leer ist, dann den Datensatz nicht speichern“ – das sind typische Bedingungen, wie sie in Access-Anwendungen ständig vorkommen.
Bedingungen entstehen durch den Vergleich von Werten mit Vergleichsoperatoren. Die wichtigsten sind:
- = – gleich
- <> – ungleich
- < und > – kleiner als/größer als
- <= und >= – kleiner oder gleich/größer oder gleich
- Like – Mustervergleich für Zeichenketten (zum Beispiel strName Like „M*“)
- Is Nothing / Is Not Nothing – Prüfung auf nicht initialisierte Objektvariablen
Mehrere Bedingungen lassen sich mit den logischen Operatoren And, Or und Not verknüpfen, auf die wir weiter unten noch eingehen.
If…Then – die einfachste Form
Die einfachste Form einer Bedingung führt einen Codeblock nur dann aus, wenn eine Bedingung wahr ist – und tut sonst nichts. Die Schreibweise sieht so aus:
If lngBestand < 10 Then MsgBox "Lagerbestand kritisch!" End If
VBA prüft, ob lngBestand kleiner als 10 ist. Ist das der Fall, wird die Meldung angezeigt. Ist es nicht der Fall, springt VBA direkt hinter das End If und macht weiter.
Für sehr kurze Fälle gibt es auch eine einzeilige Schreibweise, die ohne End If auskommt:
If lngBestand < 10 Then MsgBox "Lagerbestand kritisch!"
Diese Schreibweise ist kompakt, aber man sollte sie nur bei wirklich trivialen Fällen verwenden.
Sobald der Code im Then-Zweig auch nur ein wenig komplexer wird, ist die mehrzeilige Form mit End If deutlich leichter zu lesen und zu warten.
If…Then…Else – zwei Wege
Häufig möchte man nicht nur reagieren, wenn eine Bedingung zutrifft, sondern auch einen alternativen Weg einschlagen, wenn sie nicht zutrifft. Dafür gibt es den Else-Zweig:
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo
![Access [basics]](https://access-basics.de/wp-content/uploads/2021/02/logo400.png)