Programmieren mit Visual Basic für Applikationen (VBA)

Bedingte Anweisungen

 aufwärts

Eine bedingte Anweisung dient dazu, in Abhängigkeit von einer Bedingung entweder das eine Programm­stück oder das andere Programm­stück auszuführen. Damit ist es möglich, den Programm­fluss daten­abhängig zu steuern. Beispiels­weise sollen in einem Sortier­programm zwei Zahlen nur dann vertauscht werden, wenn sie in falscher Reihenfolge stehen, ansonsten sollen sie an Ort und Stelle belassen werden.

If-Anweisung

Die If-Anweisung hat die allgemeine Form

If bedingung Then
      anweisung1
             drei Punkte übereinander 
      anweisungm
Else
      anweisungm+1
             drei Punkte übereinander 
      anweisungn
End If

Bei bedingung muss es sich um einen Ausdruck handeln, der einen Wahrheits­wert, also True oder False, ergibt. Die Bedingung steht zwischen dem Wort If (engl.: if – wenn, falls) und dem Wort Then.

Danach folgt der If-Teil, also das Programm­stück, das ausgeführt werden soll, wenn die Bedingung erfüllt ist, hier dargestellt durch die Anweisungen anweisung1, ..., anweisungm.

Danach folgt das Wort Else und dann der Else-Teil, also das Programm­stück, das ausgeführt werden soll, wenn die Bedingung nicht erfüllt ist, hier dargestellt durch die Anweisungen anweisungm+1, ..., anweisungn (engl.: else – sonst, anderenfalls).

Bei Ausführung der If-Anweisung wird zunächst geprüft, ob die Bedingung erfüllt ist, d.h. ob sie den Wert True ergibt. Ist dies der Fall, so wird der If-Teil ausgeführt, also die unmittelbar folgenden Anweisungen. Danach wird hinter dem Else-Teil fortgefahren.

Ist die Bedingung nicht erfüllt, so wird der If-Teil übersprungen und der Else-Teil ausgeführt, also die auf das Wort Else folgenden Anweisungen.

Beispiel:  In folgendem Programm­stück wird das Maximum der beiden Werte der Variablen a und b ermittelt und der Variablen m zugewiesen.

If a > b Then
    m = a
Else
    m = b
End If

Voraus­gesetzt ist hier, dass die beiden Variablen a und b Werte haben. Es wird geprüft, ob der Wert von a größer als der Wert von b ist. Wenn dies der Fall ist, so wird der Wert von a der Variablen m zugewiesen. Wenn der Wert von a kleiner oder gleich dem Wert von b ist, so wird der Wert von b der Variablen m zugewiesen. Am Ende hat also die Variable m in jedem Fall den Wert des Maximums von a und b.

Der Programm­ablauf einer If-Anweisung lässt sich mit Hilfe eines Fluss­diagramms ver­anschaulichen. Das Fluss­diagramm für das obige Beispiel­programm ist in Bild 1 dargestellt.

Bild 1: Flussdiagramm des Beispielprogramms (If-Anweisung)
Bild 1: Flussdiagramm des Beispielprogramms (If-Anweisung)

If-Anweisung ohne Else-Teil

Oft ist folgende Situation gegeben: Ein Programm­stück soll ausgeführt werden, falls eine bestimmte Bedingung erfüllt ist, anderenfalls aber soll fortgefahren werden, ohne dass etwas getan wird. Dies kann durch eine If-Anweisung mit leerem Else-Teil programmiert werden. Es ist dann auch zulässig, das Wort Else und den leeren Else-Teil wegzulassen.

Beispiel:  In einem Sortier­programm sollen die Werte von a und b vertauscht werden, wenn sie in falscher Reihenfolge stehen, ansonsten soll nichts getan werden.

Die folgende If-Anweisung führt eine solche Vertauschung in ihrem If-Teil durch; ein Else-Teil ist nicht erforderlich und kann daher entfallen.

If a > b Then
    c = a
    a = b
    b = c
End If

Geschachtelte If-Anweisungen

Der If- oder der Else-Teil einer If-Anweisung kann wiederum aus einer If-Anweisung bestehen.

Beispiel:  Folgendes Programm berechnet das Signum einer Zahl x. Das Signum ist 1, wenn die Zahl positiv ist, -1, wenn sie negativ ist, und 0 wenn sie gleich 0 ist.

If x > 0 Then
    signum = 1
Else
    If x = 0 Then
        signum = 0
    Else
        signum = -1
    End If
End If

Hier besteht der Else-Teil der ersten If-Anweisung wiederum aus einer If-Anweisung.

Eine solche geschachtelte If-Anweisung lässt sich mithilfe des Wortes ElseIf etwas über­sicht­licher darstellen; hier ist dann nur ein End If erforderlich:

If x > 0 Then
    signum = 1
ElseIf x = 0 Then
    signum = 0
Else
    signum = -1
End If

Mehrfache Fallunterscheidungen mit Select

Mehrfache Fall­unter­scheidungen anhand des Wertes einer Variablen lassen sich auch mit der Select-Anweisung durchführen, etwa die Berechnung des Signums. Betrachtet wird hier der Wert der Variablen x. Ausgeführt werden diejenigen Programm­zeilen, die auf die erste erfüllte Case-Bedingung folgen; anschließend wird die Select-Anweisung verlassen. Hat z.B. x den Wert 3, so ist die Case-Bedingung Is > 0 erfüllt und die Anweisung signum = 1 wird ausgeführt; anschließend wird die Select-Anweisung verlassen.

Select Case x
Case Is > 0
    signum = 1
Case 0
    signum = 0
Case Is < 1
    signum = -1
End Select

Das folgende Beispiel zeigt weitere Verwendungs­möglichkeiten von Case-Bedingungen. Hier ist n die Variable, deren Wert für die Fall­unter­scheidungen herangezogen wird. Gilt beispiels­weise n = 1, so ist die Case-Bedingung 1, 4, 9 als erste erfüllt und die Anweisung zahlentyp = "Quadratzahl" wird ausgeführt. Anschließend wird die Select-Anweisung verlassen; die ebenfalls erfüllte Case-Bedingung 1, 8 wird nicht erreicht.

Select Case n
Case Is < 0
    zahlentyp = "negativ"
Case 0
    zahlentyp = "Null"
Case 2 To 3, 5, 7
    zahlentyp = "Primzahl"
Case 1, 4, 9
    zahlentyp = "Quadratzahl"
Case 6
    zahlentyp = "nichts Besonderes"
Case 1, 8
    zahlentyp = "Kubikzahl"
Case Else
    zahlentyp = "unbekannt"
End Select

 

Weiter mit:   [Programmschleifen]   oder   up

 

homeH.W. Lang   Hochschule Flensburg   lang@hs-flensburg.de   Impressum   Datenschutz   ©  
Valid HTML 4.01 Transitional