症状
これは、特にExcel VBA プロジェクトをコンパイルするときに発生する症状です。次のエラーが発生します。
User-defined type not defined
ただし、このエラーを生成するコードはコンパイラによって強調表示されないため、問題を特定できません。
私がすでに知っていることと試したこと
これは「ユーザー定義型が定義されていません」というエラーでAs Strig
、As String
. ただし、この特定のエラーはDebug > Compile VBAProject
メニュー オプションの実行中にのみ表示され、エラー メッセージ ボックスが表示されても、エラーが発生しているコード行は強調表示されません。
多くの調査の結果、このバグは参照の欠落に関連している可能性があることがわかりました。必要なすべての参照と Toolbox オブジェクトを含めたので、これを除外しました。
明らかに欠落しているDim
ステートメントを見逃していないことを確認するためにOption Explicit
、すべてのコード ページ (フォームを含む) に追加して、何も欠落していないことを確認しました。コンパイルを実行すると、エラーが引き続き表示されます。
バイナリ互換性を使用するVB6プロジェクトが原因で問題が発生することが知られていることを示す次の既知のバグもあります。
バイナリ互換性をオフにして、プロジェクトをコンパイルします。Visual Basic は、定義されていないユーザー定義型を含むコード行を強調表示します。問題を解決したら、バイナリ互換性を有効に戻すことができます。
この質問と回答でこの記事を見つけましたが、標準の Excel VBAエディターではこのオプションを見つけることができません。
私と他の人の正気を保つのを手伝ってください!
Google 検索やその他の質問から、この問題を抱えているのは私だけではないことがわかりました。
コードを手動で調べてみましたが、実行するには行が多すぎます。
Excel VBA プロジェクトでバイナリ互換性をオフにする方法はありますか? 変更する必要があるものをデバッグできない場合、この問題のあるコード行をどのように見つけるのでしょうか? どんな助けでも素敵です!
前もって感謝します。
編集: 問題のあるコード行を見つけたので、特定の問題は解決しましたその特定の行を削除した後も、問題はまだここにあります。コードで参照されているフォームのコントロール名のスペルミスでした。これは、この問題のあるコードが問題であったことをどのように見つけるかという特定の問題をまだ解決していません。このバグが発生したときに問題のあるコードを見つけて、将来他の人がこの苦痛を回避できるようにする良い方法を見つけることができますか?