• ベストアンサー

アクセスのマクロで

メニュー画面のボタンにマクロを埋め込み、クリックすると 1.メッセージボックスを表示し、この後行われる処理を表示 2.追加マクロ 3.削除マクロ としていますが、ボタン自体を選択ミスした時に、1のメッセージで"はい""いいえ"が選択でき、"はい"ならその次の項目を実行し、"いいえ"なら中止、メニュー画面に戻る様にするにはどのようにしたら良いですか? 今の状態だと、ボタンを選択ミスしても1で"はい"しか選択できずに、その後の処理が始まってしまいます。 誰か教えて下さい。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.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 ・・・以上です。

doradora64
質問者

お礼

ありがとうございました。 大変わかりやすく説明して頂き助かりました。

関連するQ&A