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

更新 : 2007 年 11 月

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

If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If
-or-
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 が見つかると、その Then の直後に指定されたステートメントが実行されます。どの elseifcondition も True にならないか、ElseIf ステートメントが 1 つも定義されていない場合は、Else の次のステートメントが実行されます。Then、ElseIf、または Else に続くステートメントの実行が終わると、End If の次のステートメントからプログラムの実行が続けられます。

752y8abs.alert_note(ja-jp,VS.90).gifヒント :

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

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

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

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

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

ElseIf 句と Else 句はどちらも必要に応じて定義します。また、複数行形式の If...Then...Else では、ElseIf 句はいくつ指定してもかまいません。ただし、Else 句の後ろには何も指定できません。複数行形式は入れ子構造にできます。

使用例

If...Then...Else ステートメントの複数行形式と単一行形式を示すコード例は、次のとおりです。

Dim number, digits As Integer
Dim myString As String
number = 53
If number < 10 Then
    digits = 1
ElseIf number < 100 Then
    digits = 2
Else
    digits = 3
End If
If digits = 1 Then myString = "One" Else myString = "More than one"

この例では、ElseIf 条件が True になり、digits に 2 の値が代入されます。その後、最後のステートメントで myString に "More than one" の値が代入されます。

参照

参照

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

Choose 関数

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

Switch 関数