Mit bedingten Anweisungen können Sie BSL-Code schreiben, der Entscheidungen trifft und Aktionen wiederholt. Folgende Bedingungsanweisungen sind in BSL verfügbar:
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.