食べられるかと思ったけど…ダメでした

ACCESSのエラーメッセージ表示について教えてください。

ACCESS2000でマクロを作成しました。
あるデータを読み込み、テーブルへ反映させるマクロです。
マクロを直接実行すると、データが存在しないとき、当然、エラーメッセージが表示されます。

ところが、このマクロをフォームから実行させると、同じ状況でエラーメッセージが表示されません。
どこに問題があってメッセージが表示されないものなのでしょう。(正常系の処理は正しく行われます)
フォームのボタンにマクロの実行を定義しただけなのですが。
VBAを開いてみても、下記のとおりクリックされたときエラーならメッセージを表示しなさいと定義されています。

Private Sub コマンド1_Click()
On Error GoTo Err_コマンド1_Click
  Dim stDocName As String
  stDocName = "マクロ名"
  DoCmd.RunMacro stDocName
Exit_コマンド1_Click:
  Exit Sub
Err_コマンド1_Click:
  MsgBox Err.Description
  Resume Exit_コマンド1_Click
End Sub

A 回答 (1件)

このルーチンでは"マクロ"にエラーがあってもVBAからのエラー表示はされません。



なぜかというと、

DoCmd.RunMacro stDocName

でマクロを実行した時点で、マクロのほうに実行を移してしまってVBA側ではルーチンを抜けてしまい何もしていないと考えられるからです。
ここで、マクロ自身が実行できないなどのエラーがあればエラーメッセージが表示されるでしょう。
(ただマクロでのエラーメッセージが出ないのは、不思議ですが、多分VBA側からの呼び出し時には、エラーが無視されていると思われます。)

VBAでメッセージを出すのであれば、マクロ自体をVBAに変換してそのルーチンをコマンド1のクリックイベントに記述するべきでしょう。
その際、変換するべきデータがないなどのチェックも必要となってくると思われます。

マクロを変換するには、[ツール]-[マクロ]-[マクロをVisual Basicに変換]でできます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
言われてみると、なるほどと感じます。
マクロ変換試してみます。
勉強になりました。

お礼日時:2004/01/16 17:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報