控制程序执行

使用条件语句,可以编写可做出判断并重复执行操作的 BSL 代码。BSL 中提供了以下条件语句:

  • If...Then...Else 语句
  • Select Case 语句

注:

If...Then...Else 语句用于评估条件是 True 还是 False,并根据结果指定要运行的一个或多个语句。通常,条件是一个表达式,使用比较运算符将一个值或变量与另一个值或变量进行比较。有关比较运算符的信息,请参阅“比较运算符”。If...Then...Else 语句可以根据需要嵌套到任意层。

条件为 True 时运行语句

要在条件为 True 时仅运行一个语句,请使用 If...Then...Else 语句的单行语法。以下示例显示了单行语法。

下例省略了 Else 关键字。

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

要运行多行代码,必须使用多行(或块)语法。此语法包含 End If 语句,如以下示例所示:

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

条件为 True 时运行某些语句,条件为 False 时运行其他语句

可以使用 If...Then...Else 语句定义两个可执行语句块:一个块在条件为 True 时运行,另一个块在条件为 False 时运行。

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

在多个备选项之间做出决定

If...Then...Else 语句的变体允许您从多个备选项之间做出选择。添加 ElseIf 子句可扩展 If...Then...Else 语句的功能,以便您可以基于不同的可能性控制程序流。例如:

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

您可以根据需要添加任意数量的 ElseIf 子句,以提供替代选项。大量使用 ElseIf 子句通常会使代码变得繁琐。如果需要在多个备选项之间进行选择,更好的方法是使用 Select Case 语句。

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

使用 Select Case 做出判断

Select Case 结构提供了 If...Then...ElseIf 的替代方案,用于从多个语句块中有选择地执行一个语句块。Select Case 语句具有与 If...Then...Else 语句类似的功能,但它可以使代码更高效且更易读。

Select Case 结构使用在结构顶部求值一次的单个测试表达式。然后,将表达式的结果与结构中每个 Case 的值进行比较。如果存在匹配项,将执行与该 Case 关联的语句块,如以下示例中所示。

以下示例说明了 Select Case 的用法:

示例 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

示例 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

注:

Select Case 结构在结构顶部对表达式求值一次。相比之下,If...Then...ElseIf 结构可以针对每个 ElseIf 语句对不同表达式进行求值。仅当每个 ElseIf 语句对相同的表达式进行求值时,才能使用 Select Case 结构替换 If...Then...ElseIf 结构。