条件文を使用すると、判断してアクションを繰り返すBSLコードを記述できます。BSLでは、次の条件文を使用できます:
注:
If...Then...Else文は、条件がTrueかFalseかを評価し、その結果に応じて実行する1つ以上の文を指定するために使用されます。通常、条件は比較演算子を使用して、ある値または変数を別の値または変数と比較する式です。比較演算子の詳細は、「比較演算子」を参照してください。If...Then...Else文は、必要な数のレベルにネストできます。
条件がTrueの場合の文の実行
条件がTrueの場合に1つの文のみを実行するには、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文を使用して、2つの実行可能文ブロックを定義できます: 1つのブロックは条件がTrueの場合に実行され、もう1つのブロックは条件が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構造は、複数の文ブロックの中から1つの文ブロックを選択的に実行するために、If...Then...ElseIfのかわりに使用できます。Select Case文は、If...Then...Else文のような機能を提供しますが、コードをより効率的で読みやすくします。
Select Case構造は、構造の最上部で1回評価される単一のテスト式を使用します。式の結果は、構造内の各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構造では、構造の最上部で式が1回評価されます。対照的に、If...Then...ElseIf構造では、ElseIf文ごとに異なる式を評価できます。If...Then...ElseIf構造をSelect Case構造に置換できるのは、各ElseIf文が同じ式を評価する場合のみです。