• 締切済み

Accessのマクロ

フォームに貼り付けたボタンがクリックされた時、作成しておいたマクロが動くようにするには、ボタンのプロパティーで『クリック時』から作成したマクロを選びます。 ここで素朴な疑問なのですが、例えば「M住所録」と言うマクロがあります。 そのマクロには「削除(表示されているレコードを削除する)」と「新規作成(新規入力レコードへジャンプ)」の2つの機能が作成されています。 こうゆうマクロをボタンのプロパティーの『クリック時』からドロップダウンリストで見ると、  M住所録  M住所録.削除  M住所録.新規作成 と言う風に表示されています。 試しに一番上の「M住所録」を選んでも何も動作しません。 一番上に表示されている「M住所録」は意味があるのでしょうか?

みんなの回答

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

> 一番上に表示されている「M住所録」は意味があるのでしょうか? 「M住所録」というマクロで、『「マクロ名」欄が埋められている先頭の行』と 『「条件」欄か「アクション」欄の少なくとも一方が埋められている先頭の行』 を見たときに、前者が先にある場合は意味がありませんが、後者が先に ある場合には意味があります。 また、「マクロ名」欄が全て空欄のマクロを作れば、その「マクロ」オブジェクトに 登録されたアクション全てが一連の動作として実行されます。 1)  マクロ名  条件    アクション   削除   Msg=2  マクロの中止                 コマンドの実行(引数=「レコードの削除」)               メッセージボックス(引数=「削除しました」)  →マクロ名として「M住所録」を指定しても何も起こらない 2)  マクロ名  条件    アクション         Msg=1  マクロの実行(引数=「M住所録.削除」)   削除         コマンドの実行(引数=「レコードの削除」)               メッセージボックス(引数=「削除しました」)  →「M住所録」のマクロ名の指定が有効 一連のマクロが比較的短い場合は、「1)」の形にして、例えば1つの フォームで使用するマクロ群を1つの「マクロ」オブジェクトとしてまとめて 保存した方が整理しやすいかと思います。 一方、1つのマクロで何工程もの処理を行う場合は、1つのコマンド ボタンの動作だけを1つの「マクロ」オブジェクトとしてまとめた方が、 後で見直すときにわかりやすいと思います。 この場合は、「2)」の形(つまりそのマクロオブジェクトそのものを呼び出す 感じ)にした方が、その人の感覚によってはわかりやすいかもしれません。 (私の場合は、おおむねフォームとマクロを一対一で対応させていたため、  「1)」の形で作っていましたが) 『「1)」の場合はAccess側が自動で判定して「M住所録」は表示させなく してもいいのでは?』と思われるかもしれませんが、まあ、そこまでの判定を させる設計にはしなかった、ということだと思います。 (「マクロ名」だけを入力してマクロを保存した場合に、アクションが記述されて  いなくても、そのマクロ名だけが表示されるのと、実質的に同じこと)

picopico_7
質問者

補足

回答ありがとうございます。 とても興味深く読ませて頂きました。 実際に試してみたいと思います。 ちょっと時間がかかるかもしれませんが後日結果報告申し上げます。

全文を見る
すると、全ての回答が全文表示されます。
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

名前がリストに出てくるのはあなたがそういう名前のマクロを登録しているからです (身に覚えがなくてもね) デザインビューで調べてみてください

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access2002のマクロについて

    フォームに「登録」ボタンを作成して、その「登録」ボタンをクリックすると、入力中のレコードが確定するようにしたいのですが、このようなマクロを組むことは可能でしょうか? Accessのマクロはかなり初心者なのですが、ご存知の方教えてください_(_^_)_

  • アクセスのマクロで

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

  • Access「レコードの移動」マクロについて

    表形式でフォームを作っています。 そして、コマンドボタンを使って、「レコードの移動」ができるように、マクロを使って アクション 「レコードの移動」 ---アクションの引数---- オブジェクトの種類---フォーム オブジェクト名-------問題 レコード-------------次のレコード オフセット-----------4 としています。(コマンドボタンを1回押すと、4件ごとに画面を動かしたい) しかし、 問題NO---------問題 1----------なん 2----------ああ 3----------なな 4----------ああ  □←これがコマンドボタン コマンドボタンに「クリック時」にマクロが実行できるように設定をして クリックすると 問題NO---------問題 2----------ああ 3----------なな 4----------ああ 5----------いい  □←これがコマンドボタン となってしまいます。そして再度コマンドボタンを押すと 9----------がが 10---------ss 11---------ff 12----------ああ  □←これがコマンドボタン ------------------------------------- になってしまいます。なので、オフセットを4から7に変えると 1回コマンドをクリックすると先頭にくる番号は「8」になったり・・・困りました。 で、フォームには1-4のレコードが表示されるようにし、コマンドボタンを1回押すと5-8、9-12と表示させたいのです。 とできれば、(全部で160行あるのですが)最終行のフォームが出てきて、コマンドボタンをクリックしてもマクロ実行エラーが出ないようにもしたいです。 よろしくお願いします。 Accsee2000 WIN98

  • エクセル マクロ教えて下さい。

    作成してあるマクロボタンを実行した時に下記の処理をしたい。 ●手順 1・表作成ボタン(作成済)をクリックする 2・MsBoxを表示する 3・Yesの時は、セルAIの数式を削除して表を作成する(マクロは作成済) 4・Noの時は、セルAIの数式を削除しないで表を作成する(マクロは作成済) 5・Cancelの時は何もしないで中止する ●手順2~5の記述を御指導お願い致します。 尚、表作成ボタンと表作成マクロは作成済です

  • 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マクロの抽出でどうしたらいいでしょうか?

    図のようにフォームには商品テーブルのフィールドを配置しています。 上のテキストボックスには、[商品グループ]の値と等しいレコードを抽出するよう入力します。 [抽出]ボタン:フィルタを実行 [解除]ボタン:フィルタを解除して、すべてのレコードを表示 それぞれクリック時のイベントに割り当てたマクロは以下です。 《マクロ名》《アクション/引数》  《値》  抽出    フィルタの実行         Where条件式     [商品グループ]=[Forms]![抽出]![txtキー]  解除    全レコードの表示        値の代入         アイテム      [txtキー]         式         NULL このようにしましたが、フィルタはフォームの起動時初回は出来ますが、[解除]ボタンを押して[抽出]ボタンを押すと再度の抽出はできません。 初回の1回だけは抽出できるんですけど・・・続けて抽出できるようにするにはどうしたらいいでしょうか?

  • アクセスのマクロでの再検索

    ACCESSで住所録を作っています。 入力のためにフォームを作成し、そのフォーム上にボタン「検索」「すべて表示」を作りたいと思っています。 マクロ  1.「検索」はアクションを「フィルタの実行」、フィルタは別にクエリで作成し、別に用意したテキストボックスに文字を入れてボタンを押すことによって検索できるように設定しました。  2.「すべて表示」は1つめのアクションが「全レコードの表示」、2つめのアクションが、検索文字を入れるテキストボックスへの「値の代入」で「""」を指定しました。 これでやってみたのですが、1回目の「検索」はうまく働くのですが、「すべて表示」して、2回目以降「検索」ボタンを押しても、1回目と同じ結果しか出てきません。 この2つのボタンが正しく働き、再検索ができるようにするにはどうすればよいのでしょうか? モジュールを作成するのでしょうか? ぜひご指導をお願いいたします!

  • アクセスのマクロ設定について

    アクセスにてフォームを作成しています。 フォーム(フォーム1)に別のフォーム(フォーム2)を開くボタン(マクロ)を作成しました。 フォーム1の主キーと同じキーのレコードを指定して、フォーム2で 開かせたいのですが、どのようにマクロを設定すれば良いのでしょうか。 前のレコードや先頭のレコードへの移動はメニューから選択できた ので分かったのですが、上記の方法は分かりませんでした・・・。 何卒よろしくお願い致します。

  • ACCESSのマクロに関しまして

    お願いします。 ACCESS97で追加クエリを作成し、その後自動起動にしようと思い、マクロで追加クエリを項目に入れマクロを作りました。 マクロを作成する際に、モジュールでレコード追加するテーブルを一度削除しようと思い、「DELETE文」でモジュールを作成し、マクロの追加クエリの前に「プロシージャの実行」でモジュールのプロシージャを実行するようマクロに記述しました。 <マクロ内容> (1)「プロシージャの実行」  (追加クエリで追加するテーブルの中身をDELする) (2)「クエリを開く」  (追加クエリでレコード追加) この用に記述し、マクロ名を「AutoExec」で記述して、ファイルを実行してもマクロが起動しません。 (1)の「プロシージャの実行」までは、実行されているようなのですが(テーブル内確認)、以降の追加クエリが実行されません。 何か他の設定があるのでしょうか? お願い致します。

  • Accessでのレコードの削除時の表示について

    いつもお世話になります。基本的なことかもしれませんがAccess初心者でよくわからないので 教えて下さい。 Access2010でテーブルからレコードを読み出すフォームを作成し、そのレコードを削除するため、 フォーム上に削除ボタンを設定しました。 削除ボタンをクリックすると小さなウインドウが開き下記のようなメッセージが表示されます。           1件のレコードを削除します。     「はい」をクリックすると、削除したレコードを元に戻すことはできません           「はい(Y)]   「いいえ(N)] メッセージのウインドウの下には読みだしたレコードのフォームが表示されていますが、 キーとなる顧客コード(数字6桁)の欄には #エラー と表示され、その他の項目はすべて ブランクになります。 「はい」をクリックするとレコードは削除されるので処理的には問題ないのですが、 削除する前に確認するためフォーム上の項目を表示したまま残したいです。 どのようにすればよいでしょうか? 削除ボタンのクリック時の埋め込みマクロの内容は以下のように設定しています。  エラー時         移動先 次         マクロ名  コントロールの移動     コントロール名 = [Screen].[PreviousControl].[Name]  マクロエラーのクリア   If not [Form].[Newrecord] Then     メニューコマンドの実行           コマンド レコードの削除 If文の最後   If [Form].[Newrecord] And Not [Form].[Dirty] Then 警告文 If文の最後   If [Form].[Newrecord] And [Form].[Dirty] Then     メニューコマンドの実行           コマンド レコードを元に戻す If文の最後   If [MacroError] <> 0 Then メッセージボックス           メッセージ = [MacroError].[Description] 警告音 はい        メッセージの種類 なし      メッセージのタイトル If文の最後  ウインドウを閉じる   オブジェクトを閉じる    オブジェクトの種類      オブジェクト名    オブジェクトの保存 確認 参考にしたAccessのプログラムから削除ボタンをコピーしたため、これが適しているかどうか わかりません。 よろしくお願いします。   

専門家に質問してみよう