トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > VBAとの出会い編 第5話「星くん、分岐処理を学ぶ!」

やってみよう!Excel VBAで業務改善!|VBAとの出会い編

条件が複雑すぎると…

「あはは。ごめんごめん。ちょっとイジワルしてみたんだ…」

八木くんはそういうと、コードを修正しました。

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節についても解説したいとこだけど…あまり一気にやっても混乱しちゃうから
分岐処理はこのくらいにして…、次は繰り返し構文にいこうか」
「ちょ、ちょっと待った!…少し、休憩しようよ?」

星くんが、八木くんにタイムのジェスチャーをします。

「…え?もう?しょうがないな。じゃあ少し休憩しようか。コーヒーでもいれるよ」

八木くんはそういうと立ち上がり、キッチンにコーヒーをいれに向かいました。

第6話「星くん、繰り返し構文を学ぶ!」に続く

文・イラスト / 武藤 玄

星くんと一緒にSTEP UPしませんか?
シーズン1 「VBAとの出会い」編: 各エピソードへのリンク
一覧にもどる