使用条件语句,可以编写可做出判断并重复执行操作的 BSL 代码。BSL 中提供了以下条件语句:
注:
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 结构。