If...Then...Else ステートメント (Visual Basic)

式の値に応じてステートメント グループを条件付きで実行します。

' Multiple-line syntax:
If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]

指定項目

  • condition
    必須。式を指定します。式の結果は、True または False、あるいは暗黙的に Boolean に変換可能なデータ型である必要があります。

    何も式がに評価される [NULL 値の使用]Boolean の変数の場合は、条件式が Trueではなく、Else のブロックが実行されますように処理され。

  • Then
    単一行の構文の場合は必ず指定します。複数行の構文の場合は省略可能です。

  • statements
    省略可能。condition が真 (True) の場合に実行されるステートメントを、If...Then の後ろに続けて指定します。

  • elseifcondition
    ElseIf が定義されている場合は必ず指定します。式を指定します。式の結果は、True または False、あるいは暗黙的に Boolean に変換可能なデータ型である必要があります。

  • elseifstatements
    省略可能。elseifcondition が真 (True) の場合に実行されるステートメントを、ElseIf...Then の後ろに続けて指定します。

  • elsestatements
    省略可能。それ以前の condition や elseifcondition の式がどれも真 (True) でない場合に実行される一連のステートメントを指定します。

  • End If
    If...Then...Else ブロックを終了します。

解説

複数行の構文

If...Then...Else ステートメントに到達すると、condition がテストされます。condition が真 (True) の場合、Then の次のステートメントが実行されます。condition が偽 (False) の場合は、各 ElseIf ステートメント (ある場合) が順に評価されます。真 (True) に評価される elseifcondition が見つかると、その ElseIf の直後に指定されたステートメントが実行されます。どの elseifcondition も True にならないか、ElseIf ステートメントが 1 つも定義されていない場合は、Else の次のステートメントが実行されます。Then、ElseIf、または Else に続くステートメントの実行が終わると、End If の次のステートメントからプログラムの実行が続けられます。

ElseIf 句と Else 句はどちらも必要に応じて定義します。また、If...Then...Else ステートメントでは、ElseIf 句はいくつ指定してもかまいません。ただし、ElseIf 句は、Else 句の後ろには指定できません。If...Then...Else ステートメントは互いに入れ子にすることができます。

複数行の構文の場合は、If ステートメントのみを最初の行に定義する必要があります。ElseIf、Else、および End If の各ステートメントの前に記述できるのは、行ラベルだけです。If...Then...Else ブロックの終わりには、End If ステートメントを指定してください。

ヒントヒント

評価する 1 つの式が、さまざまな値になる場合は、Select...Case ステートメント (Visual Basic) の方が適しています。

単一行の構文

単一行の構文は、短く簡単な条件判断を行うときに使用します。ただし、複数行の構文の方がより構造化された柔軟な記述ができます。また、コードの読みやすさや保守性が向上し、デバッグもしやすくなります。

ステートメントが単一行の If かどうかを判断するために、Then キーワードの後ろに何が続くかが調べられます。同じ行内の Then キーワードの後ろにコメント以外の記述があると、単一行の If ステートメントと判断されます。Then がない場合は、必ず複数行の If...Then...Else の先頭です。

単一行の構文の場合は、If...Then で判断した結果として、複数のステートメントを実行できます。すべてのステートメントを、コロンで区切って同じ行に記述する必要があります。

使用例

次の例は、If...Then...Else ステートメントの複数行の構文の使用方法を示しています。

        Dim count As Integer = 0
        Dim message As String

        If count = 0 Then
            message = "There are no items."
        ElseIf count = 1 Then
            message = "There is 1 item."
        Else
            message = "There are " & count & " items."
        End If

次の例では、入れ子になった If...Then...Else ステートメントを使用しています。

Private Function CheckIfTime() As Boolean
    ' Determine the current day of week and hour of day.
    Dim dayW As DayOfWeek = DateTime.Now.DayOfWeek
    Dim hour As Integer = DateTime.Now.Hour

    ' Return True if Wednesday from 2 to 4 P.M.,
    ' or if Thursday from noon to 1 P.M.
    If dayW = DayOfWeek.Wednesday Then
        If hour = 14 Or hour = 15 Then
            Return True
        Else
            Return False
        End If
    ElseIf dayW = DayOfWeek.Thursday Then
        If hour = 12 Then
            Return True
        Else
            Return False
        End If
    Else
        Return False
    End If
End Function

次の例は、単一行の構文の使用方法を示しています。

If A > 10 Then A = A + 1 : B = B + A : C = C + B

参照

関連項目

#If...Then...#Else ディレクティブ

Choose

Select...Case ステートメント (Visual Basic)

Switch

If 演算子 (Visual Basic)

概念

入れ子になった制御構造 (Visual Basic)

条件判断構造 (Visual Basic)

Visual Basic の論理演算子とビット処理演算子