「あはは。ごめんごめん。ちょっとイジワルしてみたんだ…」
八木くんはそういうと、コードを修正しました。
Sub Sample()
Dim A
A = InputBox("数値を入力してください")
If A >= 0 And A <= 100 Then
MsgBox "処理1"
Else
If A = 9999 Then
MsgBox "処理1"
Else
MsgBox "処理2"
End If
End If
End Sub
「この方がわかりやすいかな、Ifステートメントはネスト(入れ子)構造にすることができる。
このコードでも、さっきと条件はまったく同じだよ。
まず最初の条件"A >= 0 And A <= 100"で、9999は条件を満たしていないから、
Else節でネストしているIfステートメントに処理がうつる。
次の条件"A = 9999"で、9999は条件を満たす。
つまりこの場合、 変数Aの値が0~100と9999のとき"処理1"のメッセージを、
それ以外のときは"処理2"のメッセージを表示するんだ」
「…ああ、このコードの方が、まだわかりやすいかな」
星くんが目をクルクル回しながら答えます。
「論理演算子を複数使うと、複雑な条件で分岐処理が行えて便利だけど、
その分、条件は難しくわかりにくいものになってしまう。
その場合、こうやってネスト構造を利用したほうが、後からわかりやすいし、メンテナンスもしやすいよ。
ちなみにAnd演算子とOr演算子を一緒に用いた場合、And演算子が優先されるので注意が必要だよ」
星くんはもう、いっぱいいっぱいの顔をしています。
「ホントはElseIf節についても解説したいとこだけど…あまり一気にやっても混乱しちゃうから
分岐処理はこのくらいにして…、次は繰り返し構文にいこうか」
「ちょ、ちょっと待った!…少し、休憩しようよ?」
星くんが、八木くんにタイムのジェスチャーをします。
「…え?もう?しょうがないな。じゃあ少し休憩しようか。コーヒーでもいれるよ」
八木くんはそういうと立ち上がり、キッチンにコーヒーをいれに向かいました。