条件により処理を分岐させたい場合は、If~ElseIfステートメントを使用します。Ifは、"If 条件式 Then"の形式で条件を調べて、条件式に合致(式を評価した結果がtrueであるとき)だけその次のステートメントを実行します。条件がtrueでないときは、次の次の条件式の条件を調べます。
If 条件式1 Then
条件式1を満たした場合の処理
ElseIf 条件式2 Then
条件式2を満たした場合の処理
Else
条件式1と条件式2を満たさなかった場合の処理
End If
条件式で使われている比較演算子には、以下のものあります。
演算子 | 意味 | 例 |
---|---|---|
= | 等しい | If Value=5 Then ⇒ Valueの値が5ならTrue |
< | より小さい | If Value<5 Then ⇒ Valueの値が5より小さいならTrue |
<= | 以下 | If Value<=5 Then ⇒ Valueの値が5以下ならTrue |
> | より大きい | If Value>5 Then ⇒ Valueの値が5より大きいならTrue |
>= | 以上 | If Value>=5 Then ⇒ Valueの値が5以上ならTrue |
<> | 等しくない | If Value<>5 Then ⇒ Valueの値が5と等しくないならTrue |
以下の例ではインプットボックスを使って入力された文字により処理を分岐させた例です。
Sub test()
Dim intAge As Integer
intAge = InputBox("あなたの年齢を入力してください。")
If intAge > 19 Then
MsgBox "成人です。"
Else
MsgBox "未成年です。"
End If
End Sub
条件式では論理演算子を使用することができます。
演算子 | 意味 |
---|---|
条件式1 And 条件式2 | 条件式1と条件式2の両方を満たした場合True |
条件式1 Or 条件式2 | 条件式1か条件式2のいずれか1つを満たした場合True |
Not 条件式 | 条件式を満たさない場合True |
以下の例では論理演算子を使用して処理を分岐させています。
Sub test()
Dim intScore As Integer
intScore = InputBox("得点を入力してください")
If 79 < intScore And intScore <= 100 Then
MsgBox "優です"
ElseIf 69 < intScore And intScore < 80 Then
MsgBox "良です"
ElseIf 59 < intScore And intScore < 70 Then
MsgBox "可です"
ElseIf 0 < intScore And intScore < 60 Then
MsgBox "不可です"
Else
MsgBox "得点は 0~100の数字で入力してください"
End If
End Sub