Access VBAの「抽出条件でデータ型が一致しません」というエラーにつきまして


とあるAccessのシステムを触っているのですが。何か処理に不具合があると、フォーム上でメッセージボックスが出てきまして、エラー内容が記載されています。

それについては、特に問題ないのですが。

そのエラーメッセージが…どこにも見当たらないのです。
コードを一行ずつ、ステップインで実行すると。

----------
Call MsgBox(txtMsg,vbExclamation,"エラー内容")
----------

を、通っています。ここでtxtMsgにカーソルを当てると「抽出条件でデータ型が一致しません」というエラーメッセージが、この変数に格納されていることはわかります。

しかし…txtMsg上で右クリックを行い「定義」を確認しても、単にdimで変数宣言され、String型で定義されているだけでした。
カレントプロジェクトで"txtMsg"の全文検索を行っても、エラーメッセージの内容の方「抽出条件でデータ型が一致しません」で全文検索しても、どこにも「抽出条件でデータ型が一致しません」が記載されている箇所が、一切見つからないのです。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2020/06/21 23:20:06
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:moon-fondu

これは…vbaのソースではなく、関数自体に備わっているメッセージ?それとも、テーブルのどこかに、エラーメッセージが記載されている?もしくはフォーム?レポート?と、悩んでおります。

このエラーの解決方法は、ネットで調べるといくつか、見つかるのですが。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q122083...

http://blog.livedoor.jp/costalatina/archives/1406440.html

エラーを出さなくするための解決方法といいますか、そもそもこのエラーメッセージはどこから来ているのかというのが謎です。MsgBox関数にあらかじめ用意されているエラーメッセージならば…しかし「msgbox関数 エラー 一覧」とかで検索しても、これといった情報がヒットせず。

どこからこのエラーメッセージは来ているのか、ご教授いただけますと幸いです。

よろしくお願い致します。

回答1件)

id:frkw2004 No.1

回答回数194ベストアンサー獲得回数21

ポイント1000pt

Access自体が出しているエラーメッセージをtxtMsgという変数にどこかで格納しているものでしょう。
On Error GoTo ~
あるいは
On Error Resume Nexr
といった命令のある関数内で
txtMsg = Err.Description
といった代入がされていると思います。
On Error ~
という命令はVBAのプログラム上でエラーが発生したときにそれをキャッチする命令で、Errオブジェクトにそのエラー内容が設定されます。

他2件のコメントを見る
id:frkw2004

Accessが出しているエラーですが、VBA 由来もあれば ADO由来のもあります。いわゆるミドルウェアと言われるものですね。今回のエラーメッセージはSQLの実行時のエラーでしょうから、ADOを使っているならそっちがメッセージを定義しているでしょう。あるいはJet Engineかもしれません。
今回のケースなら最初にブレークした
Call MsgBox(txtMsg,vbExclamation,"エラー内容")
の行の前の処理で txtMsgへ代入しているところがあるはずです。

2020/05/29 18:55:03
id:moon-fondu

ADO、Call MsgBox(txtMsg,vbExclamation,"エラー内容")の行の前ですね…ありがとうございます。その辺りをもう1度、調べてみます。

2020/05/29 21:27:42

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません