• ベストアンサー

「yes」なら実行させて「no」なら実行させない仕組みをAccessのマクロで作れますか?

以前にも似たようなご質問をしましたが、回答して頂いた内容が私では解らなかったので再度させて頂きます。 “クエリ”を実行させる前に『「本当に実行しますか?」とメッセージを表示させて、「yes」なら実行させて「no」なら実行させない』という仕組みを「マクロ」で作れないのでしょうか? 私が作成した方法は マクロの 1行目 「アクション」のとこで「メッセージボックス」を選択し、アクションの引数「メッセージ」の箇所に「本当に実行しますか?」と入力。 2行目 「アクション」のとこで「クエリを開く」を選択し、アクションの引数「クエリ名」の箇所に「●●クエリ(任意のクエリ)」と入力。 そして保存します。 そのマクロを実行させても「本当に実行しますか?」のメッセージが出て、「OK」のボタンしか表示されないんです。 (当たり前なのかもしれませんが…) そしてその「OK」をESCキーで回避してもクエリが実行されてしまいます。 (当たり前なのかもしれませんが…) 上記の知識しかありません。どなたか柔らかくご説明して頂けないでしょうか?よろしくお願い致します。

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

自分はマクロをほとんど使わないので、VBA風になりますが・・・ 条件付のマクロにする([表示]→[条件]) 1行目 条件:MsgBox("本当に実行しますか?",4)<>6 アクション:全マクロの中止 2行目以降 Yes の場合の処理 こんな感じで出来ると思います。 4 とか 6 とかは、VBAの定数です。 VBA内では vbYes 等の名前で参照しますが、マクロ中では使えないと思いますので、直接数字を書きます。 幾つか定数を書いておきます。 (VBAのヘルプの MsgBoxを調べれば詳しく書いてます。) 1 vbOKCancel [OK] ボタンと [キャンセル] ボタンを表示します。 4 vbYesNo   [はい] ボタンと [いいえ] ボタンを表示します。 アイコンを表示するなら、上記の数字+下記の数字 16 vbCritical   警告メッセージ アイコンを表示します。 32 vbQuestion   問い合わせメッセージ アイコンを表示します。 48 vbExclamation 注意メッセージ アイコンを表示します。 64 vbInformation 情報メッセージ アイコンを表示します。 例:注意アイコン付き Yes/No :4 + 48 = 52   MsgBox(""本当に実行しますか?",52)<>6 となります。 戻り値の定数 1 vbOK 2 vbCancel 6 vbYes 7 vbNo 6 は Yes です。 <>6 でYesでなければ、中止・・・となります。

greentea69
質問者

お礼

やってみたらできました!ホント身震いするくらい感動です!!ありがとーございました

その他の回答 (2)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

すみません、venzouさんの回答の通りなのですが・・・greentea69さんに 本当にお伝えしなければならない部分への触れ方があまりにもあっさりしていて 見過ごされてしまいそうな気がしたので、お節介ながら補足させて戴きます。 > 条件付のマクロにする([表示]→[条件]) というのは、マクロをデザインビューで開いたときのメニューから、「表示(V)」の 「条件(C)」をクリックして、「条件」欄を表示させる、ということです。 「アクション」欄の「メッセージボックス」というのは、メッセージを表示させるため だけのもので、今回のご質問のように場合分けをする際には、MsgBox関数を 「条件」欄で使用する必要があります。 (なお、「『はい』ならマクロAを、『いいえ』ならマクロBを、それぞれ実行」といった  ような動作をさせる場合は、フォーム上にテキストボックス(「可視」を「いいえ」  に設定)を作成し、「値の代入」アクションで「式」にMsgBox関数を、「アイテム」  にそのテキストボックスをそれぞれ指定して、「条件」欄には  「Forms!フォーム名!テキストボックス名=6」といった式を入れるようにします。  ・・・これは、今後の参考までに)

greentea69
質問者

お礼

すっごい参考になりました!今後、Access使用するのに幅が広がりそうです(^^)V

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.1

こんな感じかな。 If MsgBox("本当に実行しますか?」", vbYesNo) = vbYes Then 'クエリを実行 End If

greentea69
質問者

お礼

すんません。pkh4989さんのご回答の意味が理解しきれませんでした(;;)でもわざわざありがとうございました。またお願いします

関連するQ&A

  • Accessのマクロで「yes、no」の選択ができますか?

    マクロを実行する前に「本当に実行しますか?」とメッセージを表示させて、「yes」なら実行させて「no」ならマクロを中止させるような場合はどのようにすればよいでしょうか? メッセージboxなどを使用するんだろうなとは思いますが具体的にどうすればよいか解りませんので教えて下さい。

  • メッセージボックスでyesならマクロ1noならマクロ2を入れたい

    メッセージボックスで エクセルの表で集計した「数量を○○個でokですか?」という質問をして 「yes」なら登録したマクロ1を実行。 「no」なら「数量を確認してやりなおし」という表示をしたいのですが 可能でしょうか?集計の行は毎回かわります。 よろしくお願いいたします。

  • アクセスのクエリを開く前にマクロを実行できますか?

    フォームやレポートを開く前にマクロを実行できますが、同様のことをクエリを開く前にもする方法はないでしょうか? 具体的には、いくつかのテーブル作成クエリと追加クエリをまとめて行うマクロを実行してから、選択クエリを開きたいのです。 「SQLビューで1行加えるだけ」みたいなのができると助かります。 よろしくお願いします。

  • Accessのマクロでモジュールを実行させたい。

    Access2002を勉強中の初心者です。 AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。 マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。 しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」 根本的に方法が間違っているのでしょうか? アドバイスをよろしくお願いします。

  • Access2007のマクロについて

    Access2007のマクロでやりたい事は・・・ 削除クエリと追加クエリを作り、このクエリを連続して処理をするために マクロ「クエリを開く」で作りました。 そうすると、そのマクロを実行すると削除クエリの「**件削除してよいですか?」という メッセージが出来ます。「OK」をクリックすると 次の追加クエリが処理されやはり「**件追加してよいですか?」というメッセージが出ます。 やりたい事は、いちいち「OK」をクリックするのが面倒なので、マクロを実行すると 「**件削除してよいですか?」というメッセージが出ないようにするにはどうしたら良いでしょうか? 分かりにくい質問で申し訳ございませんが、宜しくご教授の程お願い致します。

  • accessマクログループの全マクロの実行方法

    お世話になります。 現在、顧客のデータベースを作成しております。DBは名前、住所等の連絡先を入力したテーブルを元に下記のクエリやマクロを作成しています。取引がない顧客等はメイン名簿テーブルから削除して、メインテーブルの構造をコピーした、削除テーブルに入れるようにしたいと考えています。 そこで下記のテーブル、クエリ、グループマクロを作成しました。グループマクロは作成したクエリ3つで構成されています。各アクションクエリは一個一個は正常に作動するのですが、グループマクロを実行しますと、1行目のクエリしか実行されません。実行方法はマクロの画面で更新ボタンを押しても、フォームに削除というボタンを作成してクリック時にグループマクロを実行させるよう設定した場合の両方で起きます。  グループマクロに登録されているマクロを全て実行するにはどうしたらいいのでしょうか。色々調べると、グループマクロは1行目しか実行できないようですが、全て実行する簡単な方法はありませんか?できればVBAではない方法を希望します。大変お手数ですがどうぞ、よろしくお願い致します。  ・(テーブル)メイン名簿(以下、名簿tblとします)    ⇒フィールド:名前、郵便番号、住所、電話、メモ欄、削除の有無、削除処理日  ・(テーブル)削除テーブル(以下、削除tblとします)    ⇒フィールドは上記と同じ  ・(更新クエリ)削除処理日追加    ⇒名簿tblの「削除の有無」フィールドにyesと入力されていれば、「削除処理日」に処理日が     入力されるようにdate関数を設定しています。(date())  ・(追加クエリ)削除tblへ追加    ⇒名簿tblの「削除の有無」フィールドにyesと入力されていれば、「削除tbl」へそのレコードを、     追加する。    ・(削除クエリ)名簿tblからの削除    ⇒名簿tblの「削除の有無」フィールドにyesと入力されていれば、名簿tblからそのレコードを、     削除する。  ・(マクログループ)削除処理(上から順番に実行希望)     マクロ名           アクション     クエリ名     削除処理日追加     クエリを開く    (更新クエリ)削除処理日追加     削除tblへコピー      クエリを開く    (追加クエリ)削除tblへ追加   名簿tblからの削除    クエリを開く    (削除クエリ)名簿tblからの削除                                                        以上

  • Accessマクロで出てくるコマンドラインとは何ですか?

    Accessのマクロで、「Excelのあるファイルを開く」というアクションを登録 したいのですが、”アプリケーションの実行”というアクションを選択 すると、引数に"コマンドライン"という項目が出てきます。 ここにファイルのパスを入力しても実行できません。 ここには一体どの様に入力したらよいのでしょうか? ヘルプを見てもあまりピンとした答えが出ませんので、 具体的な入力方法を教えてください。

  • Accessのマクロの最適化

    Accessでマクロを1つ新規作成します。 作成したマクロのアクションに、「コマンドの実行」を選択し、 画面下のコマンドには、「データべースの最適化」を選択します。 しかし、「マクロまたは、VisualBasicコード実行中に開いているデータベースを最適化することはできません。」とメッセージが出ます。 メッセージの意味はわかりますが、そもそも、なぜ、マクロに、 「データベースの最適化」を選択することができるのでしょうか? できないんじゃ意味ないんじゃないですか?

  • <<ACCESS2000>>マクロでクエリを連続実行したいのですが、、、

    宜しくお願いします。 複数のクエリを連続実行させる為にマクロを使ったのですが、 クエリを実行する際、たとえば、テーブル作成クエリーだと実行前に「現在あるテーブルを削除していいか?」や、 実行後に「何件作成しました」などというボックスが表示された際、自動的に「OK」をクリック できるようにしたいのですが、どのようにすればよいのでしょうか? 教えてください。

  • アクセス・マクロで、データベースを最適化できない

    マクロの中で、コマンドの実行、という選択をして、 その中で、データベースを最適化、を選びます。 マクロは、まさにそのアクセスの中にあります。 そうすると、開いているので、できないという表示がでます。 ただし、マニュアルで、ツールバーからは可能です。 解決策を教えてください。 クエリをなんども回していて、どうも重たくなるので、マクロによるクエリ実行の合間に、最適化を実行させたいです、マクロで、そしてまた、クエリを続けて開封させたいです。

専門家に質問してみよう