- ベストアンサー
アクセスのマクロで
メニュー画面のボタンにマクロを埋め込み、クリックすると 1.メッセージボックスを表示し、この後行われる処理を表示 2.追加マクロ 3.削除マクロ としていますが、ボタン自体を選択ミスした時に、1のメッセージで"はい""いいえ"が選択でき、"はい"ならその次の項目を実行し、"いいえ"なら中止、メニュー画面に戻る様にするにはどのようにしたら良いですか? 今の状態だと、ボタンを選択ミスしても1で"はい"しか選択できずに、その後の処理が始まってしまいます。 誰か教えて下さい。よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
VBAで組まれているのか、『マクロ』オブジェクト(→テーブルやフォームなどが一覧表示される 画面で、同様に表示されているもの)で組まれているのかがわからないので、とりあえず 双方を回答しておきます。 どちらも、基本的にはMsgBox関数の第2引数で、「はい/いいえ」を表示するように指定し、 関数の結果から、それに対してどちらが選択されたかを確認して、動作を切り替える、という ことになります。 【VBAの場合】 <現状(推測)> Private Sub 実行_Click() MsgBox "追加と削除を実行します。" DoCmd.SetWarnings False 'クエリ実行時のメッセージを非表示化 DoCmd.OpenQuery "追加クエリ" DoCmd.OpenQuery "削除クエリ" DoCmd.SetWarnings True 'メッセージの非表示化を解除 MsgBox "実行しました。" End Sub <修正後> Private Sub 実行_Click() '「はい/いいえ」で「いいえ」を選択した場合は処理を中止 If MsgBox("追加と削除を実行します。", vbYesNo, "確認") = vbNo Then Exit Sub DoCmd.SetWarnings False DoCmd.OpenQuery "追加クエリ" DoCmd.OpenQuery "削除クエリ" DoCmd.SetWarnings True MsgBox "実行しました。" End Sub 【マクロの場合】 「メッセージボックス」アクションを使用しているのかと思いますが、この行を削除して、 その代わりに、『条件』列でMsgBox関数を使用します。 なお、条件列は、マクロのデザインビューで、メニューから「表示(V)→条件(C)」で 表示できます(→まだ表示されていなかった場合)。 <現状(推測)> アクション 引数 メッセージボックス 追加と削除を実行します。 メッセージの設定 いいえ クエリを開く クエリ名=追加クエリ、ビュー=データシート ビュー、データモード=編集 クエリを開く クエリ名=削除クエリ、ビュー=データシート ビュー、データモード=編集 メッセージボックス 実行しました。 <修正後> 条件 アクション 引数 (下記の式) マクロの中止 (空白) メッセージボックス 追加と削除を実行します。 (空白) メッセージの設定 いいえ (空白) クエリを開く クエリ名=追加クエリ、ビュー=データシート ビュー、データモード=編集 (空白) クエリを開く クエリ名=削除クエリ、ビュー=データシート ビュー、データモード=編集 (空白) メッセージボックス 実行しました。 『マクロの中止』アクションの『条件』欄に入力する式: MsgBox("追加と削除を実行します。", 4, "確認") = 7 ・・・以上です。
お礼
ありがとうございました。 大変わかりやすく説明して頂き助かりました。