Accessでマクロを実行しようとすると、エラーメッセージが表示されて途中でストップしてしまうことがあります。
[エラー時]アクションを使用すると、このエラーをスキップして、次のアクションへ進ませることができます。
ここでは、埋め込みマクロで解説します。
参考ここでは、ウィンドウは重ねて表示する設定にしています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
この記事の目次
選択クエリの作成
テーブル[T_顧客]を基に、[コース]フィールドで[VIP]を抽出するクエリ[Q_VIP]を作成しています。
コマンドボタンにマクロを設定
フォームにコマンドボタンを設置して、ボタンをクリックしたら、テーブル[T_顧客_VIP]を削除して、クエリ[Q_VIP]を表示するようにします。
フォームにコマンドボタンを挿入して、コマンドボタンの名前は[VIP]としています。
コマンドボタン[VIP]のプロパティを開いて、[イベント]タブの[クリック時]の[...]をクリックします。
[ビルダーの選択]ダイアログボックスで、[マクロビルダー]を選択して[OK]ボタンをクリックします。
マクロビルダーが表示されます。
[デザイン]タブの[表示/非表示]グループにある[すべてのアクションを表示]をクリックします。
そして、一覧から[オブジェクトの削除]を選択します。
[アクションカタログ]から選択してマクロウィンドウへ追加する方法もあります。
以下のように、[オブジェクトの種類]で[テーブル]を選択して、[オブジェクト名]には[T_顧客_VIP]を選択します。
次に[クエリを開く]のアクションを追加して、[クエリ名]に[Q_VIP]を指定します。
上書き保存して、マクロツールを閉じます。
参考埋め込みマクロについては、以下の記事でも解説しています。
-
パスワード入力フォームを作成してパスワードが合えば開くようにする
Accessでパスワード入力フォームを作成して、パスワードを入力してパスワードが合えばフォームを開くようにする方法です。 注意ここでは、Ac ...
-
テキストボックスの文字列でレコードを抽出(マクロビルダーで設定)
Accessでフォームのテキストボックスに入力した文字列でレコードを抽出する方法です。 ここでは、テーブルを基にウィザードを使って表形式のフ ...
コマンドボタンをクリックして実行するとエラーメッセージ
フォームに作成したコマンドボタン[VIPコース名簿]をクリックすると、マクロが実行されます。問題ありません。
しかし、テーブル[T_顧客_VIP]がない場合、以下のメッセージが表示されます。
[オブジェクトの削除]を実行しようにも、テーブル[T_顧客_VIP]がないので、実行できないのです。
オブジェクト'T_顧客_VIP'を見つけることができません。
上記のメッセージウィンドウで[OK]ボタンを押すと、今度は、以下の[マクロのシングルステップ]ウィンドウが表示されます。
エラーメッセージを表示しないで次のステップへ進ませる
埋め込みマクロの[エラー時]アクションで、メッセージを出さずに次のステップへスキップする方法です。
クリック時のイベントの[埋め込みマクロ]を編集します。
コマンドボタンのプロパティを表示して、[イベント]タブの[クリック時]には、[埋め込みマクロ]と表示されています。右端にある[...]をクリックします。
マクロビルダーが表示されます。
[新しいアクションの追加]の▼ボタンをクリックして、[エラー時]を選択します。
[エラー時]アクションの[移動先]は[次]を選択します。そして、[上へ移動」ボタンを2回クリックして、先頭へ移動します。
[移動先]のテキストボックス内でポイントすると、以下のポップヒントが表示されます。
移動先
エラーが発生すると、[次]の場合はエラーが発生したアクションの次のアクションへ進みます。[マクロ名]の場合は以下のサブマクロ名に移動します。[失敗]の場合はマクロの実行を中止します。
アクションの順番は、以下のようになります。
[新しいアクションの追加]の▼ボタンをクリックして、再度[エラー時]を選択して、[移動先]を今度は[失敗]とします。
そして、[オブジェクトの削除]の後ろへ移動します。
これで、エラー処理を解除することになります。
マクロツールは、上書き保存して閉じます。
これで、削除するテーブルが存在しない場合でも、エラーメッセージを出さずに、次のマクロアクションへ進むことができるようになります。
参考[エラー時]アクションについては、以下のMicrosoftのページを参照してください。
"OnError/エラー時" マクロ アクション - Microsoft サポート(Microsoft)
以下の記事でも[エラー時]アクションで対処する方法を紹介しています。
-
編集フォームを閉じる時のボタンを設置(保存せずに閉じる処理も)
帳票フォームなどのレコード一覧から、同じレコードの詳細フォームを開いて編集することがあります。 この編集フォームを閉じる場合、編集した内容を ...
[オブジェクトまたはクラスがこのイベントセットをサポートしていません]のエラー
Microsoft 365のAccessでコマンドボタンをクリックして、マクロを実行しようとすると、以下のメッセージが表示されるようになりました。
オブジェクトまたはクラスがこのイベントセットをサポートしていません。
上記メッセージウィンドウで[OK]ボタンをクリックすると、[マクロのシングルステップ]ウィンドウが表示されます。
永続ライセンス版のAccess2019、2016、2013では、上記メッセージウィンドウは表示されず問題なく動作します。
以下の記事で解説しているような仕組みなのですが、埋め込みマクロで、[値の代入]を使用している場合のみ、上記のエラーが表示されるようになりました。
-
フォームを参照用と編集用にボタンで切り替え(埋め込みマクロで設定)
Accessで1つのフォームを作成して、すべての内容を見せてレコードの編集ができるようにしています。 でも、そのフォームを開く時に制限を付け ...
埋め込みマクロや、ボタンを設置しているフォームにも問題はありません。
新しくデータベースを作成して、すべてのオブジェクトをインポートすると一時的には解決します。
また、マクロビルダーでリセットして上書きしても一時的には解決します。
ですが、編集していると、またメッセージウィンドウが表示されるようになります。
この場合も、[エラー時]アクションを追加して、エラーをスキップして次のマクロを実行するように設定して解決しました。
参考エラーメッセージが表示されて対応したことは、以下の記事にまとめています。
-
エラーメッセージが出たときに対応して解決したこと
Access2010って、なんだかエラーメッセージが多い気がします。 以下は、私がエラーメッセージが出たときに対処した方法です。 私の環境の ...