Access VBA: If…Then

In der Programmiersprache VBA für Access gibt es verschiedene Bedingungsarten, und zwar die VBA If Then-Bedingung und die Select Case-Bedingung. Die erste schauen wir uns in diesem Artikel im Detail an. Dabei betrachten wir auch, dass mit If…Then nicht nur eine einzige Bedingung abgefragt werden kann (sogar in einer Zeile), sondern auch nach mehreren Bedingungen unterschieden werden kann. Dazu verwendet man den ElseIf– und den Else-Zweig.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 2101_VBA_IfThen.accdb.

If…Then als Einzeiler unter VBA

Die einfachste Variante der If…Then-Bedingung können Sie als Einzeiler schreiben. Die Syntax lautet in diesem Fall wie folgt:

If  Then 

Üblicherweise denkt man, dass entweder den Wert True oder False zurückliefern soll. True ist aber nur eine Konstante für den Zahlenwert -1 und False für den Zahlenwert 0. Sie können für allerdings auch andere Zahlenwerte als -1 oder 0 übergeben. Dabei können wir zusammenfassen, dass nur 0 dem Wert False entspricht und alle anderen Zahlenwerte True. Die Bedingung ist also nur in folgenden Fällen nicht erfüllt:

If False Then ... 'False
If 0 Then ... 'False

Das gilt natürlich auch für weitere als Bedingung verwendete Konstanten oder Variablen, die den Wert 0 enthalten.

In allen anderen Fällen ist die Bedingung erfüllt:

If True Then ... 'True
If -1 Then ... 'True
If 1 Then ... 'True

Hinter die If…Then-Anweisung schreiben Sie dann einfach den auszuführenden Befehl, zum Beispiel:

Dim bolMeldung As Boolean
bolMeldung = True
If bolMeldung = True Then MsgBox "Meldung"

Vereinfachung für boolsche Ausdrücke

An dieser Stelle wollen wir gleich eine Vereinfachung einführen. Statt bolMeldung = True können Sie auch einfach bolMeldung als Bedingung angeben – die Variable enthält ja den Wert True oder False:

If bolMeldung Then MsgBox "Meldung"

bolMeldung enthält in diesem Fall bereits einen Boolean-Wert, den die If…Then-Bedingung auswerten kann.

If…Then als mehrzeiliges VBA-Konstrukt

Sie können in der einzeiligen Version der If…Then-Bedingung zwar auch mehrere durch einen Doppelpunkt getrennte Befehle angeben:

If bolMeldung Then MsgBox "Befehl1": MsgBox "Befehl2"

Dieser Code ist allerdings schlecht lesbar, weshalb wir die typische Schreibweise der If…Then-Bedingung verwenden. Diese hat die folgende Syntax:

If  Then
    
End If

Die einzeilige If…Then-Bedingung von oben formulieren wir wie folgt, was deutlich lesbarer ist:

If bolMeldung Then
    MsgBox "Erster Befehl"
    MsgBox "Zweiter Befehl"
End If

VBA If…Then mit ElseIf für weitere Bedingungen

Mit dem Schlüsselwort ElseIf erweitern wir eine If…Then-Bedingung um weitere Bedingungen. ElseIf wird wie folgt in das Konstrukt eingearbeitet:

If  Then
    
ElseIf  Then
   
End If

Wir können damit also gezielt mehr als eine Bedingung prüfen. Im folgenden Beispiel prüfen wir im If…Then-Teil, ob intZahl den Wert 1 hat. Ist das nicht der Fall, wird die Bedingung im ElseIf-Teil untersucht. Hier prüft die Prozedur, ob intZahl den Wert 2 enthält. Falls ja, wird die in diesem Teil angegebene Meldung ausgegeben. Falls nicht, geschieht gar nichts:

Public Sub ZahlPruefen(intZahl As Integer)
    If intZahl = 1 Then
        MsgBox "Zahl ist 1"
    ElseIf intZahl = 2 Then
        MsgBox "Zahl ist 2"
    End If
End Sub

Sie können beliebig viele ElseIf-Zweige in diesem Konstrukt unterbringen. Wenn Sie intZahl auch noch auf den Wert 3 prüfen wollen, fügen Sie einen weiteren Zweig mit der entsprechenden MsgBox-Anweisung hinzu:

If intZahl = 1 Then
    MsgBox "Zahl ist 1"
ElseIf intZahl = 2 Then
    MsgBox "Zahl ist 2"
ElseIf intZahl = 3 Then
    MsgBox "Zahl ist 3"
End If

VBA If…Then mit Else für alle anderen Fälle

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar