• 締切済み

VBA:実行時エラー

ExcelシートをテーブルとしてADO接続し、SQLでデータを抽出する仕組みを組んでいます。 特定のSQLで2回目の呼び出し時に「抽出条件でデータ型が一致しません。」とエラーになります。 1回目呼び出し時にはエラーにはならず正常にデータを抽出できているのですが、2回目呼び出し時のみエラーとなります。 抽出条件の引数はVariant型、テーブルの抽出対象項目は数値です。 vba初心者で恐れ入りますが、ご教授願います。

みんなの回答

  • kon555
  • ベストアンサー率51% (1844/3561)
回答No.2

『特定の』という事は再現性はあるのでしょうから、まずはエラー発生時にどの部分がどのようなタイプとして処理されているのか、それは初回と2回目で異なるのか、といった部分を明らかにすべきだと思います。  それが分かれば原因も自ずと分かりますし、別途型変換するなりも簡単です。  基本的なデバッグですが、ブレークポイントとステップ実行で地道に確認していけば、サクッと原因はわかると思いますよ。 https://www.excelspeedup.com/vbadebug/

gdyop01
質問者

補足

回答頂きありがとうございます。 デバック処理で確認したところ 1回目、2回目共にVariant/Integerと表記されていました。 どちらの回数も何ら違いは特に感じません。 異なる状況としては、recordsetを重複してopenしている事(recordsetは異なる変数として)、抽出データが1回目は8レコード以上2回目は8レコードという事です。 また、2回目の呼び出し時には呼び出し前に別のデータを取得するためにエラー原因のrecordsetとは別変数でopenしておりcloseしていない状況です。

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.1

SQLやデータがどのようになっているのか分からなくて、AccessだとしたらSQLの抽出条件の引数がVariant型というのもよく分からないのですが 第5話 VBA内でSQLを扱うコツ【連載】実務で使えるAccessのコツ https://www.r-staffing.co.jp/engineer/entry/20210910_1 わからな状態の想像での回答になりますが エクセルのデータが数値じゃないものがあるのかもしれませんのでSQLの抽出条件の「テーブルの抽出対象項目」をValで囲ってみてください。 Val(テーブルの抽出対象項目)

関連するQ&A