1

作成したいくつかのカスタムクラスを使用して、かなり広範なExcelユーザーフォームを作成しています。現在、期待どおりに機能しているように見えますが、フォームを閉じると、プロセスがバックグラウンドで実行されているように見えることがあります。

フォームを閉じた後、CPUコアがフル稼働し続けることがあり、スプレッドシートのセルをクリックすると、スプレッドシートが繰り返し更新されているかのように、数式バーに表示される値がすばやく点滅するためです。

各クラス(または少なくともすべての大きなクラス)のClass_Terminate関数にブレークとデバッグステートメントを挿入しようとしましたが、それらはすべてき​​ちんと分解されているようです。さらに、コードブレークで休むと、すべてが期待どおりに停止します。

それで、何が得られますか?問題を切り分けるためのより良い方法はありますか?ユーザーフォームを閉じた後、まだ実行されているものを確認するにはどうすればよいですか?

4

1 に答える 1

4

積極的なコメントとコメント解除の後、私のエラーはVBAのデストラクタ関数であるClass_Terminate()に関係しているようです。

「WellCollection」クラス内に「WellReader」クラスがあるため、WellCollectionクラスを終了すると、WellReaderも一緒に破棄されます。ただし、両方のクラスにClass_Terminate()を定義している場合は、プログラムが(文字通り)ループになります。関数を定義するだけで、コードが含まれていなくてもエラーが発生します。

(これは、この問題にある程度の光を当てる、関連するStackOverflowの投稿です。)

したがって、両方のデストラクタ関数が機能しない理由はわかりませんが、今のところ、どちらも機能しません。みんなの助けてくれてありがとう!

于 2013-01-17T19:09:09.977 に答える