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, execute the three colon-separated statements in the order 
' that they appear 
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 の論理演算子とビット処理演算子