If...Then...Else ステートメント

式の値に基づいて、条件付きの実行を行うフロー制御ステートメントです。

If condition Then statements [Else elsestatements ] 

または、次に示すブロック形式の構文を使用することもできます。

If condition Then
   [statements]
[ElseIf condition-n Then
   [elseifstatements]] . . .
[Else
   [elsestatements]]
End If 

引数

  • condition
    次の 2 種類の式のいずれかを指定します。

    真 (True) か偽 (False) を評価する数式または文字列式。condition の値が Null 値の場合、condition は偽 (False) が使われます。

    TypeOf objectname Is objecttype 形式の式。objectname は任意のオブジェクトの参照であり、objecttype は任意の有効なオブジェクト型です。この式は、objectnameobjecttype で指定されたオブジェクト型であれば真 (True) を返し、それ以外の場合には偽 (False) を返します。

  • statements
    condition が真 (True) の場合、実行されます。コロン (:) で区切られた一連のステートメントを指定します。

  • condition-n
    condition に同じ。

  • elseifstatements
    condition-n が真 (True) の場合に実行される一連のステートメントを指定します。

  • elsestatements
    Else 以前に定義されている条件 (condition または condition-n) がどれも真 (True) でない場合に実行される一連のステートメントを指定します。

解説

1 行の If...Then...Else ステートメント (第 1 の構文) は、短く簡単な条件判断を行うときに使用します。ブロック形式の If...Then...Else ステートメント (第 2 の構文) は、1 行の構文に比べ、より構造化された柔軟な記述ができます。また、コードの読みやすさや保守性が向上し、デバッグもしやすくなります。

メモ   第 1 の構文でも 1 つの条件に対して、複数のステートメントを記述することができますが、その場合は次のようにコロンで区切って 1 行に記述する必要があります。

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

ブロック形式の If (第 2 の構文) が実行されると、最初に引数 condition が評価されます。condition が真 (True) の場合、Then に続くステートメントが実行されます。condition が偽 (False) の場合、代わりに ElseIf で指定した条件 (condition-n) が評価されます。いずれかの条件が真 (True) の場合、対応する Then に続くステートメントが実行されます。ElseIf で指定された条件式がいずれも偽 (False) の場合 (または、ElseIf 節がないとき) は、Else に続くステートメントが実行されます。Then または Else に続くステートメントの実行が終わると、End If の次のステートメントからプログラムの実行が続けられます。

Else 節と ElseIf 節はどちらも必要に応じて定義します。また、ブロック形式の If では、ElseIf 節はいくつでも指定できます。ただし、Else 節の後ろに ElseIf 節を指定することはできません。また、ブロック形式の If はネスト (入れ子) 構造にすることができます。

If ステートメントがブロック形式であるかどうかは、Then キーワードの後ろに記述があるかどうかによって判断します。Then キーワードの後ろにコメント以外の記述があると、1 行の If ステートメントと判断されます。

ブロック形式の If ステートメントは、行の先頭に記述する必要があります。ブロック形式の If の最後には、必ず End If ステートメントを記述してください。

必要条件

バージョン 1