条件分岐
条件分岐は、プログラムで処理の方向を切り替える役割があります。条件分岐で大事なのは And や Or で2つ以上の条件を組み合わせるような書き方に慣れることです。条件分岐には If 文がよく使われますが、場合によっては Select Case を使った方が見やすくすっきりとした書き方ができるようになります。
If Then
If 文では、判定する条件を、真(True)か偽(False)で評価します。
真の場合は、If 内になる処理を実行し、偽であれば、実行せずに次に進みます。
判定する条件は、比較演算子を使います。
Sub IfTest()
Dim age As Long
age = 19
If age >= 20 Then
MsgBox "成年です。"
ElseIf age < 0 Then
MsgBox "???"
Else
MsgBox "未成年です。"
End If
End Sub
最初の If は、「ageが20以上なら」という条件式を調べます。
次に ElseIf で「ageが 0 未満」という条件式を調べます。このように2つ目以降の条件を調べたい時には ElseIf を重ねます。
もう一度 If が来ると入れ子状態と判断されます。
最後にどの条件にも合致しない場合として Else があります。Else は当然ですが条件式はありません。
If 文は上から順番に条件式を評価していくという点に注意してください。
Sub IfTest2()
Dim age As Long
age = 19
If age < 20 Then
MsgBox "未成年です。"
ElseIf age < 0 Then 'ここには絶対来ない
MsgBox "???"
Else
MsgBox "成年です。"
End If
End Sub
今度は先に未成年の基準を持ってきましたが、これでは2回目の条件式に来ることはありません。なぜなら20未満なら、最初の条件式で処理を終えてしまうからです。
このように If 文は条件式の順番に気を付ける必要があります。
では、上のプログラムを直してみます。
Sub IfTest3()
Dim age As Long
age = 19
If age < 20 And age >= 0 Then
MsgBox "未成年です。"
ElseIf age < 0 Then
MsgBox "???"
Else
MsgBox "成年です。"
End If
End Sub
最初の条件式を「20以上0以下」に変更しました。
これなら0未満は次の条件式に進めるので問題ないでしょう。
Select Case
Select Case を使わなくても If で書けないことはないのですが、場合によってはわかりやすくスッキリ書くことができます。
Sub SelectTest()
Dim age As Long
age = 19
Select Case age
Case 19
MsgBox "キャンペーン中です"
Case 21
MsgBox "キャンペーン中です"
Case Else
MsgBox "通常価格です"
End Select
End Sub
この例では、age が 19 と 21 の場合に特定のメッセージを表示するようにしています。最後の End Select どの条件にも合致しない場合です。
実はもっと簡単に書くこともできます。
Sub SelectTest2()
Dim age As Long
age = 19
Select Case age
Case 19, 21
MsgBox "キャンペーン中です"
Case Else
MsgBox "通常価格です"
End Select
End Sub
このように書くと、19 か 21 というふうに Or と同じ意味になります。
(☞゚ヮ゚)☞ 次は オブジェクト について学びましょう!