式の値に応じて、文のグループを条件に従って実行します。
構文
If condition Then statements [Else elsestatements] 、またはブロック形式の構文を使用できます:
If condition Then [statements] [ElseIf condition-n Then [elseifstatements]] . . . [Else [elsestatements]] End If
引数:
Condition: 有効な式。TrueまたはFalseとして評価される数値式または文字列式。条件がNullの場合、条件はFalseとして扱われます。
Statements: コロンで区切られた1つ以上の文。条件がTrueの場合に実行されます。
condition-n: conditionと同じです。
Elseifstatements: 関連するcondition-nがTrueの場合に実行される1つ以上の文。
Elsestatements: 前のconditionまたはcondition-n式がTrueでない場合に実行される1つ以上の文。
備考
短い簡単なテストには、単一行形式(最初の構文)を使用できます。一方、ブロック形式(2番目の構文)は、単一行形式よりさらに構造化されて柔軟性が高く、通常は判読、メンテナンスおよびデバッグが容易です。したがって、単一行形式はサポートされていますが、ブロック形式を使用することをお薦めします。
Note:
単一行構文はサポートされていますが、お薦めしません。
単一行構文では、If...Then判断の結果として複数の文を実行できますが、次の文のように、それらはすべて同じ行にあり、コロンで区切られている必要があります:
Dim A,B,C A=11 If A > 10 Then A = A + 1 : B = B + A : C = C + B
ブロックIf (2番目の構文)を実行すると、条件がテストされます。条件がTrueの場合は、Thenに続く文が実行されます。条件がFalseの場合は、各ElseIf (存在する場合)が順番に評価されます。True条件が見つかった場合は、関連するThenに続く文が実行されます。ElseIf文がいずれもTrueでない場合(またはElseIf句がない場合)は、Elseに続く文が実行されます。ThenまたはElseに続く文の実行した後、End Ifに続く文の実行が続行されます。
Else句とElseIf句はどちらもオプションです。ブロックIfには、必要な数のElseIf文を指定できますが、Else句の後には指定できません。ブロックIf文はネストできます。つまり、ブロックIf文内に別のブロックIf文を含めることができます。
Thenキーワードに続く内容を調べて、文がブロックIfであるかどうかが判別されます。同じ行のThenの後ろにコメント以外の何かが配置されている場合、文は単一行のIf文として扱われます。
ブロックIf文は、行の最初の文である必要があります。ブロックIfは、End If文で終了する必要があります。
例: 条件文
If文- 条件がtrueの場合に1つの文のみを実行
Dim i, strVal i=10 If i=10 Then strVal = "Hello"
if条件がtrueの場合に複数の文を実行します。各文を個別の行に配置して、End Ifキーワードで文を終了する必要があります:
Dim i, strVal
i=10
If i=10 Then
If i=10 Then strVal = "Hello"
i = i+1
End If
If...Then...Else文 - 実行する2つの行セットから1つを選択
条件がtrueの場合は文を実行し、条件がtrueでない場合はElseの他の文を実行します。Elseキーワードを追加する必要があります
Dim i
Dim strVal
i=5
If i=10 Then
If i=10 Then strVal = "Hello"
i = i+1
Else
i= i+2
strVal = "world"
End If
If...Then...ElseIf …Else文 - 実行する多数の行セットから1つを選択
条件がtrueの場合に文を実行し、最初の条件がtrueでなく、別の条件がtrueの場合は、別の文を実行します。追加の条件すべてにElseIfキーワードを追加し、最後にElseが続く必要があります:
Dim i
Dim strVal
i=14
If i=10 Then
If i=10 Then strVal = "Hello"
i = i+1
Elseif i=11 Then
i= i+2
strVal = "world"
Else
i= i+3
strVal = "world"
End If