Einführung in Kontrollstrukturen

Kontrollstrukturen ermöglichen die Steuerung des Programmablaufs. Ohne Anweisungen zur Ablaufsteuerung durchläuft die Logik eines Programms Anweisungen von links nach rechts und von oben nach unten. Sehr einfache Programme können zwar in diesem sequentiellen Ablauf geschrieben werden, und manche Abläufe können durch Operatoren gesteuert werden, welche die Hierarchie von Operationen festlegen, aber zur Entwicklung von komplexen, leistungsstarken Programmen ist es wichtig, dass eine Programmiersprache es ermöglicht, die Reihen­folge von Anweisungen mit Hilfe von Kontrollstrukturen und Schleifen zu ändern.

Entscheidungsstrukturen

Visual Basic-Prozeduren können Bedingungen prüfen und dann je nach Prüfungsergebnis unterschiedliche Operationen durchführen. Die von Visual Basic unter­stützten Entscheidungsstrukturen sind:

·     If...Then

·     If...Then...Else

·     Select Case

If...Then

If...Then-Blöcke dienen zur bedingten Ausführung einer oder mehrerer Anweisungen. Hierbei können Sie die einzeilige Syntax und die mehrzeilige Blocksyntax verwenden:

If Bedingung Then Anweisung

If Bedingung Then

     Anweisungen

End If

Bedingung ist normalerweise ein Vergleich, kann jedoch auch ein beliebiger Ausdruck sein, der einen numerischen Wert ergibt. Visual Basic interpretiert diesen Wert ent­weder als True oder als False. Der numerische Wert Null entspricht False, und ein numerischer Wert ungleich Null entspricht True. Wenn Bedingung den Wert True hat, führt Visual Basic alle Anweisungen aus, die auf das Schlüsselwort Then folgen. Sie können die einzeilige oder die mehrzeilige Syntax verwenden, um nur eine einzige Anweisung bedingt auszuführen (die beiden folgenden Beispiele sind äquivalent)

If EinDatum < Now Then EinDatum = Now If EinDatum < Now Then

    EinDatum = Now

End If

Die einzeilige Version von If...Then verwendet keine End If-Anweisung. Falls Sie mehrere Code-Zeilen ausführen möchten, wenn Bedingung den Wert True hat, müssen Sie einen mehrzeiligen Syntaxblock mit If...Then...End If verwenden.

If EinDatum < Now Then

   EinDatum = Now

   Timer1.Enabled = False               ' Zeitgeber-Steuerelement deaktivieren

End If

If...Then...Else

Verwenden Sie einen If...Then...Else-Block, um mehrere Anweisungsblöcke zu definieren, von denen einer ausgeführt wird:

If Bedingung1 Then

     .... [Anweisungsblock-1]

[ElseIf Bedingung2 Then

     .... [Anweisungsblock-2]] ...

[Else

     .... [Anweisungsblock-n]]

End If

Visual Basic prüft zunächst Bedingung1. Wenn diese Bedingung den Wert False hat, prüft Visual Basic Bedingung2. Dies wird so lange fortgesetzt, bis eine Bedingung gefunden wird, die den Wert True hat. Wenn Visual Basic eine Bedingung findet, die den Wert True hat, wird der entsprechende Anweisungsblock ausgeführt, und die Ausführung wird dann mit dem Code fortgesetzt, der auf End If folgt. Optional kann ein Else-Anweisungsblock verwendet werden, den Visual Basic ausführt, wenn keine Bedingung den Wert True hat.

If...Then...ElseIf ist im Grunde nur ein Sonderfall von If...Then...Else. Sie können eine beliebige Anzahl von ElseIf-Abschnitten (oder auch überhaupt keinen) verwenden. Die Verwendung eines Else-Abschnitts ist unabhängig von der Verwendung von ElseIf-Abschnitten möglich.

Ihre Anwendung kann beispielsweise unterschiedliche Operationen durchführen, die davon abhängen, auf welches Steuerelement in einem Menü-Steuerelementefeld geklickt wird:

Private Sub mnuCut_Click (Index As Integer)

   If Index = 0 Then       ' Befehl "Ausschneiden".

      CopyActiveControl    ' Allgemeine Prozeduren aufrufen.

      ClearActiveControl

   ElseIf Index = 1 Then   ' Befehl "Kopieren".

      CopyActiveControl

   ElseIf Index = 2 Then   ' Befehl "Löschen".

      ClearActiveControl

   Else                  ' Befehl "Einfügen".

      PasteActiveControl

   End If

End Sub

Select Case

In Visual Basic ist die Select Case-Struktur als Alternative zu If...Then...ElseIf verfügbar, wenn bei mehreren Anweisungsblöcken ein Block selektiv ausgeführt werden soll. Die Funktionalität der Select Case-Anweisung ist der Funktionalität der If...Then...Else-Anweisung ähnlich, aber Select Case erzeugt effizienteren Code und ist besser lesbar, wenn es mehrere Auswahlmöglichkeiten gibt.

Eine Select Case-Struktur arbeitet mit einem einzigen Prüfausdruck, der nur einmal zu Beginn der Struktur ausgewertet wird. Visual Basic vergleicht das Ergebnis dieses Ausdrucks anschließend mit den Werten der möglichen Fälle, die durch Case ein­geleitet werden. Wenn eine Übereinstimmung vorliegt, wird der zu diesem Fall gehörige Anweisungsblock ausgeführt:

Select Case Prüfausdruck

     [Case Ausdrucksliste1

           .... [Anweisungsblock-1]]

     [Case Ausdrucksliste2

           .... [Anweisungsblock-2]]

     [Case Else

           .... [Anweisungsblock-n]]

End Select

Jede Ausdrucksliste ist eine aus einem oder mehreren Werten bestehende Liste. Wenn sich in einer Liste mehrere Werte befinden, werden die einzelnen Werte durch Kommas voneinander getrennt. Jeder Anweisungsblock enthält keine, eine oder mehrere Anweisungen. Wenn mehrere Case-Fälle mit dem Prüfausdruck überein­stimmen, wird nur der Anweisungsblock ausgeführt, der dem ersten überein­stimmenden Case-Fall zugeordnet ist. Visual Basic führt die Anweisungen im (optionalen) Case Else-Abschnitt aus, wenn keiner der Werte in der Ausdrucksliste mit dem Prüfausdruck übereinstimmt.

Private Sub mnuCut_Click (Index As Integer)

   Select Case Index

      Case 0               ' Befehl "Ausschneiden".

        CopyActiveControl  ' Allgemeine Prozedur aufrufen.

        ClearActiveControl

      Case 1              ' Befehl "Kopieren".

        CopyActiveControl

      Case 2              ' Befehl "Löschen".

        ClearActiveControl

      Case 3               ' Befehl "Einfügen".

        PasteActiveControl

      Case Else

        frmFind.Show      ' Dialogfeld "Suchen" anzeigen.

   End Select

End Sub

Angenommen, Sie fügen dem Menü Bearbeiten im If..Then..ElseIf-Beispiel einen weiteren Befehl hinzu. Sie könnten dann einen weiteren ElseIf-Abschnitt hinzufügen oder aber die Funktion mit Select Case umschreiben:

Die Select Case-Struktur wertet einen Ausdruck nur einmal zu Beginn der Struktur aus. Die If...Then...ElseIf-Struktur kann dagegen in jeder ElseIf-Anweisung einen anderen Ausdruck auswerten. Sie können eine If...Then...ElseIf-Struktur nur dann durch eine Select Case-Struktur ersetzen, wenn die If-Anweisung und alle ElseIf-Anweisungen denselben Ausdruck auswerten.