Programmausführung steuern

Mit bedingten Anweisungen können Sie BSL-Code schreiben, der Entscheidungen trifft und Aktionen wiederholt. Folgende Bedingungsanweisungen sind in BSL verfügbar:

  • If/Then/Else-Anweisung
  • Select Case-Anweisung

Hinweis:

Mit der If...Then...Else-Anweisung wird ausgewertet, ob eine Bedingung "True" oder "False" ist, und je nach Ergebnis eine oder mehrere auszuführende Anweisungen angegeben. Die Bedingung ist normalerweise ein Ausdruck, der einen Vergleichsoperator verwendet, um einen Wert oder eine Variable mit einem anderen Wert oder einer anderen Variablen zu vergleichen. Informationen zu Vergleichsoperatoren finden Sie unter "Vergleichsoperatoren". If...Then...Else-Anweisungen können in beliebig viele Ebenen verschachtelt werden.

Anweisungen ausführen, wenn eine Bedingung "True" ist

Um nur eine Anweisung auszuführen, wenn eine Bedingung "True" ist, verwenden Sie die einzeilige Syntax der If...Then...Else-Anweisung. Das folgende Beispiel zeigt die einzeilige Syntax.

In diesem Beispiel fehlt das Schlüsselwort "Else".

Sub Test()
    Dim myNumber
    myNumber = 10
    If myNumber < 15 Then myNumber = 15
    'myNumber: 15
End Sub

Um mehrere Codezeilen auszuführen, müssen Sie die mehrzeilige (blockorientierte) Syntax verwenden. Diese Syntax enthält die Anweisung "End If", wie im folgenden Beispiel dargestellt:

Sub Test()
    Dim myNumber
    myNumber = 10
    If myNumber < 15 Then 
        myNumber = 15
    End If
    'myNumber: 15
End Sub

Bestimmte Anweisungen ausführen, wenn eine Bedingung "True" ist, und andere ausführen, wenn eine Bedingung "False" ist

Sie können eine If...Then...Else-Anweisung verwenden, um zwei Blöcke mit ausführbaren Anweisungen zu definieren. Der eine Block soll ausgeführt werden, wenn die Bedingung "True" ist, der andere, wenn die Bedingung "False" ist.

Sub Test(value)
    If value = 0 Then
        value = 10
    Else
        value = 20
    End If
    ' Outputs: value: 10 if value was 0, otherwise 20
End Sub

Entscheidung zwischen mehreren Alternativen

Eine Variation der If...Then...Else-Anweisung ermöglicht Ihnen, aus mehreren Alternativen auszuwählen. Durch Hinzufügen von ElseIf-Klauseln wird die Funktionalität der If...Then...Else-Anweisung erweitert, sodass Sie den Programmfluss anhand verschiedener Möglichkeiten steuern können. Beispiel:

Sub ReportValue(value)
If value = 0 Then
                    value = 10
        ElseIf value = 1 Then
                    value = 20
        ElseIf value = 2 Then
                    value = 30
        Else
                    value = 40
        End If
        'value: 20
End Sub
ReportValue(1) ' Condition ElseIf value = 1 is met and value will be set to 20

Sie können so viele ElseIf-Klauseln wie nötig hinzufügen, um alternative Optionen bereitzustellen. Die Verwendung zahlreicher ElseIf-Klauseln wird oft unübersichtlich. Eine bessere Möglichkeit, zwischen mehreren Alternativen zu wählen, ist die Select Case-Anweisung.

Sub NestedIf(value)
    If value < 10 Then
        If value < 5 Then
            'value is less than 5
        Else
            'value is between 5 and 9
        End If
    Else
        'value is 10 or greater
    End If
End Sub

NestedIf(6)   ' Triggers the logic: value is between 5 and 9

Mit "Select Case" Entscheidungen treffen

Die Select Case-Struktur ist eine Alternative zu If...Then...ElseIf, um einen von mehreren Anweisungsblöcken selektiv auszuführen. Eine Select Case-Anweisung bietet Funktionen wie die If...Then...Else-Anweisung, macht den Code jedoch effizienter und lesbarer.

Eine Select Case-Struktur arbeitet mit einem einzelnen Testausdruck, der einmal am Anfang der Struktur ausgewertet wird. Das Ergebnis des Ausdrucks wird danach mit den Werten für jeden Fall in der Struktur verglichen. Wenn eine Übereinstimmung vorliegt, wird der mit diesem Fall verknüpfte Anweisungsblock ausgeführt, wie im folgenden Beispiel dargestellt.

Die folgenden Beispiele veranschaulichen die Verwendung der Select Case-Anweisung:

Beispiel 1:

Dim age
age = (30/6) * 6   ' age = 30
Select Case True
    Case age < 18
        'You're a minor Section
    Case age >= 18 And age <= 65
        'You're an adult Section
    Case Else
        'You're a senior citizen Section
End Select

Beispiel 2:

Dim grade
grade = "B"
Select Case grade
        Case "A", "B", "C"
                'Pass Section
        Case "D"
                'Barely Passed Section
        Case "F"
                'Fail Section
        Case Else
                'Invalid grade Section
End Select

Hinweis:

In der Select Case-Struktur wird ein Ausdruck einmal am Anfang der Struktur ausgewertet. Im Gegensatz dazu kann in der If...Then...ElseIf-Struktur für jede ElseIf-Anweisung ein anderer Ausdruck ausgewertet werden. Sie können eine If...Then...ElseIf-Struktur nur durch eine Select Case-Struktur ersetzen, wenn jede ElseIf-Anweisung den gleichen Ausdruck auswertet.