MsgBoxが処理を続けるか判断する
こんにちは。伊川(@naonaoke)です。
今回は、MsgBoxが処理を中断するか、続行するかを判断します。
以前、上の記事で、MsgBoxを紹介しました。
しかし、みなさんの日常で、【再試行】とか、【よろしいですか?】等を選択後に、処理が実行される場合があります。
MsgBoxの処理の方法を紹介します。
問題提起
(株)IKAWAの阿久 世子男(アク セスオ)は、上司から下記の依頼を受けました。
・市販のソフトのように、アラートの中で、【Yes】or 【No】を選択できるようにして欲しい。
どのようなコードを記載すればいいだろうか?
解決策

・MsgBoxで、【Yes】or 【No】を選択させる
MsgBoxで処理実行判定をする
他のセクションと共同でACCESSを利用する場合は、丁寧に作成したと思われます。
しかし、処理判定を何度も要求されると、ユーザーが面倒と思うこともありますので、注意が必要です。
MsgBox処理判定作成手順 その1 データベースを確認する

3つのうち、どれか1つというような処理をする場合は、ラジオボタンを使います。
・ラジオボタンは、1つのみ選択可能
今回は、ラジオボタンを作成して、MsgBoxで処理実行判断をします。
MsgBox処理判定作成手順 その2 処理判断実行のフォームを作成する

空白のフォームを作成して、「デザインビュー」を開きます。

「オプショングループ」を選択します。

選択するフォームを入力します。

通常は、一番上の入力した値が既定値になります。
今回は、「赤フォーム」が既定値になります。

上の図に、値という項目があります。
赤フォーム⇒値:1
青フォーム⇒値:2
黄フォーム⇒値:3
この値を元にVBAのコードを記載することになります。

オプションボタンを選択します。

オプショングループの名前(お題)を決めます。

上の図のようなグループが作成できました。
MsgBox処理判定作成手順 その3 VBA実行ボタンを作成して、VBAのコードを仕込む

オプショングループの名前は、「フレーム0」が既定値になっているので、名前を変更します。
「選択フレーム」にします。

フォームを開くというボタンにVBAのコードを仕込みます。
MsgBox処理判定作成手順 その4 VBAのコードを読んでみる
赤フォーム(既定値:1)が選択されたとき、
MsgBoxで【Yes】が選択されたら、赤フォームを開く。
そじゃなければ、フォームを開かない。
上の2つの記事が参考になると思います・

赤フォームしか記載していませんが、青フォーム、黄フォームも、既定値と、フォームの名前が変わるだけです。
Private Sub 開く_Click()
Select Case Me![選択フレーム]
Case 1
If MsgBox("赤フォームを開きますか?", vbOKCancel) = 1 Then
DoCmd.OpenForm "赤フォーム"
Else
MsgBox "キャンセルしました", 48 + 0, "処理中止"
End If
Case 2
If MsgBox("青フォームを開きますか?", vbOKCancel) = 1 Then
DoCmd.OpenForm "青フォーム"
Else
MsgBox "キャンセルしました", 48 + 0, "処理中止"
End If
Case 3
If MsgBox("黄フォームを開きますか?", vbOKCancel) = 1 Then
DoCmd.OpenForm "黄フォーム"
Else
MsgBox "キャンセルしました", 48 + 0, "処理中止"
End If
End Select
End Sub
ここがポイント

処理を実行するのは、すぐ憶えるのですが、処理を中止するというのは、なかなか憶えないものです。必要な場合は、処理を中止するというコードも憶えましょう。
まとめ

ラジオボタンを作成して、MsgBoxで処理を中止するということができました。すこしだけ、市販のようなソフトを作成した阿久 世子男(アク セスオ)なのでした。
今回のサンプルファイルは、No57です。

わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。













