Share via


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

更新 : 2010 年 12 月

条件式の値を評価し、条件に応じて適切なステートメントを実行します。

' 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 に変換可能なデータ型である必要があります。

  • 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

参照

処理手順

方法: 1 つ以上の条件に基づいてステートメントを実行する (Visual Basic)

参照

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

Choose

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

Switch

概念

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

条件判断構造 (Visual Basic)

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

履歴の変更

日付

履歴

理由

2010 年 12 月

「解説」セクションが再構成されました。

情報の拡充

2010 年 12 月

例が追加されました。

カスタマー フィードバック