目次
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なんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。