Accessでシステムを作っていくと、ある条件によって処理を分けたいときがあります。
マクロ(VBAじゃ無い方ネ)で条件分岐を作りこんでいくのは、できないことはないけどめんどくさい。
加えると、後から分岐後の処理を追加したりするのは、作りこまれた処理の流れを読み取りづらくなかなか骨の折れる作業です。
複雑な条件分岐こそ、VBAの出番です!
では、まず、ある条件を満たすか否かで後に続く処理を分けるやり方に触れてみましょう。
If ~ End Ifを使って分岐させます。
ここでは分岐の判定にLesson1で使ったMsgbox関数を使います。Msgbox関数は、表示させるメッセージ(“ ダブルクォーテーションで囲った文字)の後ろに記述を省略できるオプションがあります。
メッセージにクエスチョンマークを追加し、「はい」、「いいえ」いずれかの答えを求める表示にしました。さらに、パソコンを使っている人が、「はい」、「いいえ」のどちらを選択したか分かるように変形します。変形した部分は赤色の部分です。
MsgBox ( “朝ごはん食べた?”, vbQuestion + vbYesNo) = vbYes
続いて、If ~ End Ifと組み合わせます。
使用される際は、そちらの環境で十分テストのうえ使用してください。
Sub bunkitest() If MsgBox("朝ごはん食べた?", vbQuestion + vbYesNo) = vbYes Then ←ここに条件式を書きます ↑ パソコンを使っている人が「はい」を選んだときの処理を書きます。 ↓ Else ↑ パソコンを使っている人が「はい」を選ばなかったときの処理を書きます。 ↓ End If End Sub
では、実際にIf文を書いてみましょう。「はい」を選んだときは、「今から食べましょう。」のメッセージを、そうでないときは、「出かけましょう。」というメッセージを表示させます。
Sub bunkitest() If MsgBox("朝ごはん食べた?", vbQuestion + vbYesNo) = vbYes Then MsgBox "出かけましょう。" Else MsgBox "今から食べましょう。" End If End Sub
入力ができたら、再生ボタンを押して実行してください。思ったとおりの動きになったでしょうか?
ついでになりますが、あとで処理の内容を変更しようとしたとき、「あ、この部分は「はい」を選択した部分だな。」と一目で分かる書き方があります。それは、分岐中にある文を字下げすることです。
行頭にカーソルを合わせ、Tabキーを押してください。4文字分の空白が挿入されましたね?
Sub bunkitest() If MsgBox("朝ごはん食べた?", vbQuestion + vbYesNo) = vbYes Then MsgBox "出かけましょう。" Else MsgBox "今から食べましょう。" End If End Sub
こうしておくことで、あとあと読みやすくなります。
また、分岐する条件をコメントに残しておくことも有効です。
コメントとは、VBAの記述としては無視させる書き方のことです。
行頭に ’ (シングルクォーテーション)を付けることで、‘ 以下をコメントにすることができます。
コメントになった文は、緑色に変化するので一目でそれと分かります。
Sub bunkitest() If MsgBox("朝ごはん食べた?", vbQuestion + vbYesNo) = vbYes Then '「はい」を選んだとき MsgBox "出かけましょう。" Else '「はい」を選ばなかったとき MsgBox "今から食べましょう。" End If End Sub
次回は、Select Case 文を使用した分岐に挑戦しましょう。
コメントをどうぞ!