If...Then...Else ステートメント
式の値に基づいて、条件に応じてステートメントのグループを実行します。
構文
ifconditionThen [ statements ] [ Elseelsestatements ]
または、ブロック形式の構文を使用できます。
ifconditionThen
[ statements ]
[ ElseIfcondition-nThen
[ elseifstatements ]]
[ Else
[ elsestatements ]]
End If
If...Then...Else ステートメントの構文には、次の指定項目があります。
パーツ | 説明 |
---|---|
condition | 必須。 次の 2 種類の式の 1 つ以上を指定します。 True または False に評価される数値式または文字列式です。 condition が Null の場合は、condition が False として処理されます。 TypeOfobjectnameIsobjecttype という形式の式。 objectname は任意のオブジェクト参照であり、objecttype は任意の有効なオブジェクト タイプです。 objectnameが objecttype で指定されたオブジェクトの種類のいずれかである場合、式は True です。それ以外の場合は False です。 |
statements | ブロック形式では省略可能で、Else 句がない 1 行形式では必要です。 condition が Trueの場合にコロンで区切られる、または実行されるステートメントを指定します。 |
condition-n | 省略可能です。 condition と同じです。 |
elseifstatements | 省略可能。 関連する condition-n が True の場合に実行されるステートメントを指定します。 |
elsestatements | 省略可能です。 以前の condition または condition-n 式がどれも True でない場合に実行されるステートメントを指定します。 |
解説
単純な短いテストには、1 行形式 (最初の構文) を使用します。 しかし、ブロック形式 (2 番目の構文) では、1 行形式よりも構造化され柔軟性に富みます。一般的に、読みやすくなり保守とデバッグが簡単になります。
注:
1 行の形式でも、If...Then 判定の結果として実行される複数のステートメントを指定できます。 次のステートメントのように、すべてのステートメントは同じ行にコロンで区切って記述する必要があります。
If A > 10 Then A = A + 1 : B = B + A : C = C + B
ブロック形式 If ステートメントは行の最初のステートメントである必要があります。 ステートメントの Else、 ElseIf、End If の部分には、行番号またはその前の行ラインのみを含めることができます。 ブロック If は End If ステートメントで終了する必要があります。
ステートメントがブロック If かどうかを判断するには、Then キーワードの後に何が指定されているかを確認します。 同じ行の Then の後に表示されるコメント以外の場合、ステートメントは 1 行形式の If ステートメントとして処理されます。
Else 句と ElseIf 句は、省略可能です。 ブロック If では必要なだけ ElseIf 句を含めることができますが、Else 句の後には何も表示されません。 ブロック If ステートメントはネストできます。つまりそれぞれに含まれます。
ブロック If (2 番目の構文) を実行するときに、condition がテストされます。 condition が True の場合は、Then に続くステートメントが実行されます。 condition が False の場合は、代わりに ElseIf で指定した各条件 (ある場合) が評価されます。 True 条件が見つかると、関連する Then の直後のステートメントが実行されます。 ElseIf 条件が True でなければ (または ElseIf 句がなければ)、Else に続くステートメントが実行されます。 Then または Else に続くステートメントを実行した後は、End If に続くステートメントから実行が続けられます。
ヒント
TipSelect Case は、いくつかの可能性のあるアクションを持つ 1 つの式を評価する際にさらに役立ちます。 ただし、 TypeOfオブジェクト名Isobjecttype 句は 、Select Case ステートメントでは使用できません。
注:
TypeOf は、Object 以外の Long、Integer などのハード データの種類では使用できません。
例
この例では、If...Then...Else ステートメントのブロック形式と 1 行形式の両方を示します。 If TypeOf...Then...Else の使用方法も示します。
Dim Number, Digits, MyString
Number = 53 ' Initialize variable.
If Number < 10 Then
Digits = 1
ElseIf Number < 100 Then
' Condition evaluates to True so the next statement is executed.
Digits = 2
Else
Digits = 3
End If
' Assign a value using the single-line form of syntax.
If Digits = 1 Then MyString = "One" Else MyString = "More than one"
If TypeOf 構造を使用して、プロシージャに渡されたコントロールがテキスト ボックスかどうかを判断します。
Sub ControlProcessor(MyControl As Control)
If TypeOf MyControl Is CommandButton Then
Debug.Print "You passed in a " & TypeName(MyControl)
ElseIf TypeOf MyControl Is CheckBox Then
Debug.Print "You passed in a " & TypeName(MyControl)
ElseIf TypeOf MyControl Is TextBox Then
Debug.Print "You passed in a " & TypeName(MyControl)
End If
End Sub
関連項目
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。