您可以使用條件陳述式撰寫進行決策和重複動作的 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 結構。