トップ > スキル : アプリケーション > VBA for Access > 応用編(マクロ作成)
フォームの[DM表示フォーム]のコンボボックスの一覧から選択したDM_IDのレコードを各テキストボックスに表示させるマクロを作成します。
[作成]タブを選択して、[その他]グループの[マクロ]ボタンをクリックします。

[マクロ]ウィンドウが開きます。
[表示/非表示]グループの[すべてのアクションを表示]と[マクロ名]を選択します。
また、マクロ名列が表示されたことを確認します。

マクロを保存します。F12キーを押して、「M_DM」という名前で保存します。

一覧から指定したものを表示するマクロ
コンボボックスから選択したDM_IDのレコードを2つのテキストボックスに表示させます。
1行目の[マクロ名]に「レコード表示」と入力します。[アクション]は「値の代入」を選択肢から選びます。

次に[アクションの引数]のアイテムと式に次のような記述をします。

アイテム欄は、レコードを表示させる非連結コントロールの名前を指定します。
式の欄には、DLookUp関数を利用して、条件で指定したDM_IDをDMテーブルから探し出して、該当するDM_ID番号のDM題名を表示させる式を作成します。
DLookUp関数
【書式】 DLookUp(演算対象,定義域,[,演算対象条件]
指定されたレコードのセットに含まれるフィールドの値を1つ返します。また、抽出条件を満たすレコードが複数見つかった場合は、最初のレコードのフィールド値を返します。もし、抽出条件を満たさない場合や定義域にレコードが含まれない時はNull値を返します。
同様に、[内容]を表示するテキストボックスに選択された内容を表示させます。
[アクション]は「値の代入」を選択肢から選びます。そして、[アクションの引数]プロパティのアイテムと式の欄に以下のように記述します。

指定されたレポートを開く
次は、レポート開くマクロを作成します。ただし、コンボボックスで選択されたDM_IDのレコードのみを印刷プレビューで開く動作を作ります。
[マクロ名]に「印刷呼び出し」と入力し、[アクション]には「レポートを開く」を選択肢から選びます。
次に、[アクションの引数]プロパティは以下のように設定します。
- レポート名:DM印刷レポート
- ビュー:印刷プレビュー
- Where条件式:[DMテーブル]![DM_ID]=[Forms]![DM表示フォーム]![cmb選択]
- ウィンドウモード:標準

DM_IDが指定されていない場合の処理
DM表示フォームが開いた直後には、コンボボックスには何も値が表示されていません。その時に、[印刷]ボタンを押した場合、空データの印刷プレビューが表示されないように、メッセージを表示させて、動作を中止するマクロを作成します。
[マクロ名]は「印刷中止」と入力して、[アクション]は「メッセージボックス」を選択肢から選びます。アクションの引数は、以下のような設定を行います。
- メッセージ:”印刷するDMのIDを選択してください。”
- 警告音:はい
- メッセージの種類:注意!
- メッセージのタイトル:DM_IDを選択!
続けて[アクション]には「イベントのキャンセル」を選択肢から選びます。このアクションの引数はありません。

マクロを上書きして保存します。
※ マクロ名の前に「びっくりマークの三角形」が2007から表示されるようになりました。これは、動作しないということではなく、アクションを実行する際には気を付けてくださいという意味らしいです。信頼のおける場所にデータベースが指定されていることを確認してから実行するようにしましょう。