- ベストアンサー
Accessのアクションマクロでエラー処理は出来ない?
アクセスのアクションマクロでエラー処理は出来ないのでしょうか? 具体的には、オブジェクトの削除でテーブルを削除するマクロを作ったのですが、該当するテーブルが存在しない場合はそのアクションをとばして次のアクションに進ませたいと考えています。 この場合アクションマクロからでは設定は出来ないのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エラー処理が出来ない、繰り返し処理が出来ない、条件分岐が貧弱 これはマクロの弱点です
その他の回答 (1)
- DexMachina
- ベストアンサー率73% (1287/1744)
> アクセスのアクションマクロでエラー処理は出来ないのでしょうか? No.1 の方が言われるように、VBAのようなエラー処理を行う手段はありませんが、個別の事例 ごとの対処で代替することは、(場合によっては)可能です。 例えば、私がマクロを使っていた際は、今回のご質問のように「テーブルの有無」を確認するのに 以下のような方法を採っていました: 1)そのマクロの呼出元フォームに、非表示のテキストボックスを新設(「テーブル有無」と命名) 2)そのコントロールソースに「=DFirst("[ID]","テーブル1")」という式を設定 (有無確認の対象となるテーブルの名前が「テーブル1」の場合) 3)マクロの『条件』欄に、「IsError(Forms!フォーム1!テーブル有無)=False」を設定 (上記の呼出元フォームが「フォーム1」の場合) ・・・以上です。 (上記のIsError関数の戻り値は、テーブルがあればFalseに、なければTrueになります) なお、有無を確認するテーブルを、同じフォーム上のコントロールで指定したものにしたい場合は、 非表示テキストボックスのコントロールソースを「=DFirst("[ID]",[テーブル名])」としてやれば 対応できます。 (テーブル名を指定するコントロールが「テーブル名」というテキストボックス(等)の場合) *上では「"テーブル1"」とダブルクォーテーションで囲んで文字列として渡していたのに対し、 こちらでは「[テーブル名]」と角括弧で囲んでコントロールを参照しているのでご注意下さい* ※蛇足になりますが、マクロであっても、「マクロの実行」アクションで「実行回数」や「繰り返し 条件式」の引数を指定してやれば、繰り返し処理は可能です。 (VBAに比べれば、機能としてはやはり貧弱であることに違いはありませんが・・・)
お礼
ご返答頂きありがとうございます。 そうなんです、この方法は思いついていたんですよ。 でもある意味面倒な方法なので、直接指定する方法が無いかを探しておりました。 今回は早々にあきらめてモジュールで組みたいと思います。
お礼
なるほど、よくわかりました。 早々にあきらめてモジュールで組みたいと思います。 ありがとうございました。