オデッセイの運営サイト一覧

Excel®️、Accessのマクロ・VBAのスキルを評価する資格VBAエキスパート

企業・教育機関の皆さまへ 試験会場を探す お問い合せ

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

第5話「星くん、分岐処理を学ぶ!」

第5話「星くん、分岐処理を学ぶ!」

登場人物紹介

条件が複雑すぎると…

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

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

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との出会い」編:エピソード一覧

一覧へ戻る

MENU