dポイントプレゼントキャンペーン実施中!

エクセルVBAにて、ソフトを作製しています。
急に「無効なオブジェクトライブラリです。または定義されていないオブジェクトへの参照を含んでいます」というエラーが出てくるようになり、すべてのプロシージャが実行出来ない状況に陥ってしまします。

そうなってしまったら、全て閉じて最終保存したところまで戻らなければならず、非常にイラつきます。

中身ですが、ユーザーフォームは特に使っておらず、Sheet内のフォームのコマンドボタン、またコントロール/ツールボックスからリストボックスとテキストボックスを使っています。

ソースの中身について
・SQL接続を使っています。
・開く度にテキストボックスを複数削除し、所定位置に複数生成します。

リストボックスやテキストボックスのサイズ、位置等変更したら、このエラーに陥る傾向があります。

エラーに陥ったソースをエラーになる前のソースに追加しても、特に問題が起こりません。

エラーメッセージのヘルプを開こうとしても、表示されません。

これは一体なにが原因なのでしょうか?
条件がどうしてもつかめません。
参照設定についても特に参照できていないライブラリはありません。

宜しくお願いします。

A 回答 (1件)

状況だけでは原因がつかめないのですけど もう少し具体的な情報がほしいですね。


VBAのソースとかあれば何かわかるかも、参照設定にはどのライブラリを含めているのかとか エラー 時の CPU稼働率、メモリーの占有率とか・・・・

SQLはDAOで接続、その際にODBCの設定とか・・・

SQl Server 2005 とかをしようしているとか・・・・

この回答への補足

本日自力で解決しました。

今回のプログラムでは開く度に、特定の複数のテキストボックスをDeleteし、再度テキストボックスを作り直すという処理を行っていました。

しかし、エクセル内には恐らくオブジェクトのカウンタか何か分かりませんが、Deleteしても何かの値が記憶され蓄積されていたようです。改良するたびに上書き保存してたので、それと同時に目に見えないカウンタも徐々に蓄積。カウンタが上限に到達するとエラー発動。
しかしエラーが発動しても、その特定のテキストボックスを数個消せばエラーが消えることが分かりました。(カウンタがリセットされる。)
そして、workbook オープン時の処理を手動で7~10回程度実行すると、エラーに落ちることが分かりました。(テキストボックスの生成は8個+デフォルトでオブジェクトを10個程使用、なので、オブジェクトが100個ほどになると限界?)

エラーに落ちると何もプロシージャが動かなくなるので、テキストボックスを手動で消す。これを繰り返せば、一応エラーを回避出来るようです。

結論から言いますと、『オブジェクトの数』が原因っぽいです。エラーメッセージがあまりにも抽象的なので、あくまで推測ですが。

補足日時:2009/12/01 19:48
    • good
    • 0

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