Office 2019 Access 2019

[マクロビルダー]と[コードビルダー]を使う場合に気をつけること

投稿日:2022年5月15日 更新日:

Accessでは、マクロアクション(マクロの実行アクション)やVBA(Visual Basic for Applications)を使って一連の操作を簡単に実行できます。

よく使用する例としては、フォームにコマンドボタンを作成して、そのボタンをクリックすることで定義した操作を実行できるようになります。

そのコマンドボタンを作成する場合、マクロアクションかVBAで定義することになりますが、目的とする動作は同じでも、作成方法は異なります。

マクロアクションの方が初心者向きですが、VBAならできるけど、マクロアクションではできないこともあります。

しかし、マクロアクションの方がオブジェクトやコントロールの名前を変更した場合は、自動で修正されるなどのメリットもあります。

[ビルダーの選択]ダイアログボックスで[マクロビルダー]を選択するか、[コードビルダー]を選択するかで悩むこともあると思います。

VBAでできなかったから、マクロアクションへ変更する場合もあると思います。

そういう場合に気をつけてほしいことを記しておきます。

フォームのコマンドボタン

クリック時イベントで設定

ここでは、コマンドボタンのプロパティを開いて、クリック時イベントでフォームを開く設定をします。

[マクロビルダー]で設定する方法と、[コードビルダー]で設定する方法を解説します。

マクロビルダーで設定

コマンドボタンのプロパティを開いて、[イベント]タブの[クリック時]の[ビルダー選択」ボタン[…]をクリックします。

キーボードから[F4]キーを押すと、プロパティの表示/非表示ができます。

キーボード[F4]キー

[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックスで[マクロビルダー]を選択

[ビルダーの選択]ダイアログボックスは、コマンドボタンで右クリックして、ショートカットメニューから[イベントのビルド]をクリックしても表示できます。

ショートカットメニューの[イベントのビルド]

[マクロビルダー]のウィンドウが表示されます。[マクロウィンドウ]と呼ばれることもあります。

[マクロツール]の[デザイン]タブが表示されます。

[新しいアクションの追加]の▼ボタンをクリックします。

[マクロビルダー]のウィンドウ

長い一覧が表示されます。これが[マクロアクション]と呼ばれるコマンドです。

一覧から[フォームを開く]を選択します。

マクロアクションの一覧から[フォームを開く]を選択

[フォームを開く]コマンドの設定ウィンドウが表示されます。

[フォーム名]の▼ボタンをクリックすると、一覧には、既存のフォームがすべて表示されますので、目的のフォームを指定します。

その他の設定項目は、既定のままにします。

分かりづらいときは、ポップヒントを読むことをお勧めします。

次の[新しいアクションの追加]にマクロアクションを追加して繋げていくことができますし、アクションの順番も変更できます。後で編集することもできます。

ここでは、[フォームを開く]アクションのみにします。

[フォームを開く]コマンドの設定ウィンドウ

動作を確認したい場合は、[ツール]グループの[実行]ボタンをクリックすると確認できます。

上書き保存して、マクロビルダーを閉じます。

マクロアクションでは、入力後カーソルを別領域へ移動させて保存しないと、保存できない場合がありますので気をつけてください。

[マクロデザイン]タブのコマンドボタン[実行][上書き保存][閉じる]

設定後のプロパティには、[埋め込みマクロ]と表示されます。

マクロ設定後のプロパティ[埋め込みマクロ]

参考目的のアクションが見つからない場合は、[すべてのアクションの表示]ボタンをクリックすると表示されます。

[すべてのアクションの表示]ボタン

コメントを残すこともできます。マクロアクションの一覧から[コメント]を選択します。

マクロアクションの[コメント]

コメントのテキストボックスに入力すると、以下のように緑色の文字で表示されます。

マクロアクションのコメント

エラー時アクションもあります。

[エラー時]アクションでマクロのエラーを出さずに次に進ませる

Accessでマクロを実行しようとすると、エラーメッセージが表示されて途中でストップしてしまうことがあります。 [エラー時]アクションを使用 ...

続きを見る

独立マクロを作成する場合も同じです。

独立マクロの場合は、ナビゲーションウィンドウに表示されます。

独立マクロを作成してフォームを開くボタンを設置

Accessで作成済みのフォームを、ボタンをクリックして開くようにする方法です。 ここでは、独立マクロを作成してボタンに登録する方法を解説し ...

続きを見る

[埋め込みマクロ]と[独立マクロ]の違いについては、以下に記しています。

どちらがよいというわけではありません。上手に使い分けてください。

独立マクロと埋め込みマクロの違いを知って使い分け

Accessのマクロには、独立マクロと埋め込みマクロというのがあります。 独立マクロは、マクロを個別に作成して、後でオブジェクトのプロパティ ...

続きを見る

コマンドボタンウィザードで作成した場合も[埋め込みマクロ]と表示され、マクロアクションで作成されています。ウィザードで作成した後、どんなアクションが使われているかを確認できます。

コマンドボタンウィザードを使用したボタンの作成

Accessで起動時にメニューフォームを表示した後、ボタンをクリックして目的のフォームを開くようにしたいという要望はよくあります。 コマンド ...

続きを見る

テーブルで設定するデータマクロもマクロアクションで操作できます。

削除後のレコードを自動で指定テーブルへ保存するデータマクロ

Accessには、テーブルで行った削除や追加、更新などの実行時に、設定した処理を自動で実行してくれる[データマクロ]というのがあります。 こ ...

続きを見る

更新日時を指定テーブルやフィールドへ自動で保存するデータマクロ

Accessのテーブルのデータを処理するためのマクロのことを[データマクロ]と呼びます。 テーブルで行った削除や追加、更新などの実行時に、設 ...

続きを見る

変数を使用することもできます。

レポートの詳細セクションに直線を引いて数行おきに罫線を設定する

Accessのレポートで罫線を数行おきに設定する方法です。 Accessには罫線という機能はありませんが、[詳細]セクションに[直線]を引く ...

続きを見る

レポートを数行おきに色が異なる縞模様(背景色)にするには

Accessでレポートを作成すると、既定で1行おきに背景色が異なる縞模様になります。 背景色はプロパティで簡単に変更できますし、背景色なしに ...

続きを見る

コードビルダーで設定

[ビルダーの選択]ダイアログボックスが表示されますので、[コードビルダー]を選択して[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックスで[コードビルダー]を選択

VBEが起動します。VBE(Visual Basic Editor)とは、VBAを記述するためのエディターです。

VBEのコードウィンドウにフォームを開くためのコードを記述します。

小文字で入力しても、自動で大文字に変換されますし、入力補助ウィンドウを使用するとミスが少なくなります。

VBEの入力補助ウィンドウ

以下のように入力して閉じます。

DoCmd.OpenForm "F_入力フォーム"

VBEにコードを記述

詳細な設定については、Microsoftの以下の記事を参照してください。

DoCmd.OpenForm メソッド (Access) | Microsoft Docs(Microsoft)

簡単なコードなら問題ないかもしれませんが、コードの記述にはある程度の(いや、多くの)知識が必要になります。

マクロアクションではできないこともVBAならできることがあります。データベース全体で使用しているコードを確認する場合は、VBEを表示すれば確認できるので便利です。

コードビルダーで設定後のプロパティには、[イベントプロシージャ]と表示されます。

コードビルダーで設定後のプロパティ[イベントプロシージャ]

参考VBAが得意でコードビルダーしか使用しないのであれば、[Accessのオプション]ですぐにVBEを表示する設定ができます。

[Accessのオプション]ダイアログボックスの[オブジェクトデザイナー]にある[常にイベントプロシージャを使用する]のチェックボックスをオンにすると、[ビルダーの選択]ダイアログボックスが表示されず、すぐにVBEが表示されるので効率的です。

常にイベントプロシージャを使用したい場合の設定

[Accessのオプション]ダイアログボックスの[常にイベントプロシージャをしようする]の設定

以下の本はお勧めです。初心者向けの解説で、マクロアクションとVBAについて理解しやすいです。

オブジェクトやコントロールの名前を変更した場合の違い

データベースの作成途中、または、完成後にオブジェクト名を変更することがあります。

変更するのはいいのですが、変更したあとに、動作しない、エラーがでるといった状況になることがあります。

マクロアクションとVBAで設定した場合の違いを解説します。

たとえば、以下のように2つのコマンドボタンがあります。

上は、マクロビルダーを起動してマクロアクションで作成したボタンで、下は、コードビルダーを起動してVBAで作成したボタンです。

フォームに設置したコマンドボタン

フォーム名[F_入力フォーム]を[F_新規入力フォーム]に変更します。

参考オブジェクト名に全角括弧やスペースなどは含まないようにしたほうがいいです。

Access データベースで特殊文字を使用したエラー - Office | Microsoft Docs(Microsoft)

フォーム名の変更

そして、フォームの2つのコマンドボタンをクリックしてみます。

マクロビルダーで作成したボタンは、動作しますが、コードビルダーで作成したボタンをクリックすると、以下のエラーメッセージが表示されます。

実行時エラー'2102'

フォーム名'F_入力フォーム'が正しくないか、存在しないフォームを参照しています。

コマンドボタンをクリックした時のエラーメッセージ

2つのコマンドボタンを設置しているフォーム[F_menu]をデザインビューで開いて、それぞれのビルダーを表示してみます。

マクロビルダーで作成したコマンドボタンを選択して、クリック時イベントの[…]をクリックします。

[埋め込みマクロ]の[…]ボタン

フォーム名は、自動的に変更されています。

マクロウィンドウのフォーム名

コードビルダーで作成したコマンドボタンを選択して、クリック時イベントの[…]をクリックします。

[イベントプロシージャ]の[…]ボタン

フォーム名は、そのままです。修正する必要があります。

VBEのコードウィドウに記述されたコード

また、コマンドボタンの名前を変更した場合もマクロアクションでは何も修正する必要はありません。コマンドボタンの[名前]と[標題]は異なります。[標題]とはボタンに表示される文字のことです。

コマンドボタンの[名前]と[標題]

Accessに慣れないうちは、できるだけマクロアクションを使って設定したほうが楽だと思います。

マクロアクションでは設定できない場合のみ、コードビルダーを起動して設定するようにしておくといいかもしれません。

VBAが分からなくても、コピー&ペーストで動作するかもしれませんが、後々、修正が必要になったとき、初心者が分かりやすいのはマクロアクションです。

マクロアクションで設定しておいて、VBAを学習した後、マクロアクションをVBAに書き換えてみるのもいいと思います。

マクロアクションで設定しているのにエラーが出る場合

マクロアクションで設定していても、以下のようなメッセージウィンドウが表示されることがあります。

フォーム名'F_入力フォーム'が正しくないか、存在しないフォームを参照しています。

エラーメッセージのウィンドウ

これは、[Accessのオプション]ダイアログボックスで、[名前の自動修正]がオフになっているためです。

[現在のデータベース]の[名前の自動修正オプション]にある[名前の自動修正を行う]のチェックボックスをオンにすると自動修正されるようになります。

[名前の自動修正情報をトラックする]がオンであった場合は、Accessを再起動する必要はありません。コマンドボタンを設置しているフォームを再表示すると、修正されます。

[名前の自動修正情報をトラックする]をオフにすると、他の項目は無効になります。

既定はオンになっています。

[Accessのオプション]ダイアログボックスの[名前の自動修正オプション]

ただ、名前の自動修正は完璧ではありません。以下のようなこともあります。

開くときに意図しないパラメーターの入力ウィンドウが表示される

Accessで作成したデータベースのテーブルや、クエリ、フォーム、レポートを開こうとすると、[パラメータの入力]を求めるウィンドウが表示され ...

続きを見る

[名前の自動修正]はオフにしなければならない場合は、マクロウィンドウを表示して手動で修正してください。

イベントプロシージャの削除

VBE(コードビルダー)を開いてコードを記述してみたけど、うまくできなかったので、マクロアクションの設定に変更することもあると思います。

その時に注意して欲しいことがあります。

コードビルダーで設定した後は、プロパティに[イベントプロシージャ]と表示されます。設定しなくても、コードビルダー(VBE)を表示しただけで、[イベントプロシージャ]と表示されます。

[イベントプロシージャ]と表示されたプロパティ

イベントプロシージャの文字だけを消しても、コードは残っていますので注意してください。

コードが削除されずに残る場合

[ビルダーの選択]ダイアログボックスを表示して[マクロビルダー]を選択するため、プロパティの[イベントプロシージャ]の文字を消します。

そして、[ビルダー選択]ボタン[…]をクリックすると、[ビルダーの選択]ダイアログボックスが表示されます。

[イベントプロシージャ]の文字を消して[ビルダーの選択]ダイアログボックスを表示

そして、マクロビルダーで設定すると、以下のようにプロパティには[埋め込みマクロ]と表示されます。

[埋め込みマクロ]と表示されたプロパティ

でも、[フォームデザイン]タブの[ツール]グループにある[コードの表示]をクリックして、VBEを開くと、

[フォームデザイン]タブの[ツール]グループにある[コードの表示]

以下のように記述したコードは残っています。

VBEのコードウィンドウに記述されたコード

VBAからマクロアクションへ変更する場合は、VBE(コードビルダー)からコードを削除して保存してから、変更するようにしてください。

VBEを表示するショートカットキーは、[Alt]+[F11]です。再度、このショートカットキーを使用すると、フォームやレポートウィンドウに切り替えられます。

キーボード[Alt]+[F11]

VBEを閉じるショートカットキーは、[Alt]+[Q]です。

キーボード[Alt]+[Q]

また、マクロアクションは、アクションを削除し上書き保存してマクロウィンドウを閉じても、プロパティには[埋め込めマクロ]と表示されます。

プロパティから[埋め込みマクロ]の文字を削除しておかないと、設定していないのに設定していると勘違いしてしまうこともあります。

フォームやレポートは、コピーして使用することもあると思います。

この時、埋め込みマクロやVBAも一緒にコピーされます。残ったままにしておくと、エラーの原因になることもありますので、設定後は不要なコードやアクションが残っていないかを確認するようにしてください。

参考できるだけ[マクロビルダー]と[コードビルダー]での両方の設定を解説するようにしていますので、参考にしてください。

テキストボックスでレコード抽出(コードビルダーを起動して設定)

Accessのフォームで検索用のテキストボックスを作成して、そのテキストボックスに入力した文字列の部分一致でレコードを抽出する方法を紹介しま ...

続きを見る

テキストボックスの文字列でレコードを抽出(マクロビルダーで設定)

Accessでフォームのテキストボックスに入力した文字列でレコードを抽出する方法です。 ここでは、テーブルを基にウィザードを使って表形式のフ ...

続きを見る

フォームのフィルター実行後のデータをレポートへ出力する

Accessのフォームでフィルターを実行した後、そのフィルターのデータをそのままレポートへ出力する方法です。 フィルターが実行されていない場 ...

続きを見る

フォームのオプションボタンでレポートのレコードソースを切り替え

1つのテーブルから、クエリを作成してデータを抽出することはよくあります。 そのクエリをもとにレポートを作成するとき、レポートのレコードソース ...

続きを見る

フォームのコンボボックスの値でレコードを抽出

Accessの分割フォームのデータシートビューには、Excelのフィルターと同じようにフィルターボタンがあり、Excelの操作と同じように様 ...

続きを見る

コンボボックスに表示するリスト(値集合ソース)をボタンで切り替え

Accessのフォームでコンボボックスの値集合ソースをボタンで切り替える方法です。 下のようなフォームを作成しています。 [日本食]ボタンを ...

続きを見る

検索

ほかの記事も検索してみませんか?

Profile

執筆者/はま

-Office 2019 Access 2019

Copyright © 2001-2022 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2022 AllRights Reserved Powered by AFFINGER4.