プログラム実行の制御

条件文を使用すると、判断してアクションを繰り返すBSLコードを記述できます。BSLでは、次の条件文を使用できます:

  • If...Then...Else文
  • Select Case文

注:

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文が同じ式を評価する場合のみです。