1

VBA でのクラス オブジェクトの使用に関して、より哲学的な質問があります。クラス オブジェクトをもっと使用したいのですが、明らかな制限がいくつかあります。コミュニティがそれらを克服する方法を見つけることができれば幸いです。

クラスは、一連のコードの一部である単一のメソッドまたは複数のメソッドで作成および使用する場合にうまく機能します。問題は、次にコードがトリガーされるまで保持したい場合です。それらを保持するには、オブジェクトへの参照を保持する必要があります。通常、これはグローバル参照になります (これを行うためのより良い方法があれば、知りたいです)。

この問題は、プロジェクトがリセットされ、すべてのオブジェクト (または少なくともパブリック変数の参照) が破棄されたときに発生します。VBA プロジェクトをリセットする方法はいくつかあります。ユーザーが明示的にリセットする必要があるものは無視できます。これにより、未処理のコード エラーが残ります。独自のコードにトップ レベルのエラー ハンドラをすべてキャッチし、エラーがユーザーに表示されないようにすることができます。ただし、他の人のコードのエラーを処理する方法はありません。これでも完全なコード リセットが発生し、クラス オブジェクトが破壊されます。

これらの問題を克服する方法について何か提案はありますか?

4

2 に答える 2

0

オブジェクトのすべての「ステータス」情報は に保持されObject Propertiesます。あなたがあなた自身のクラスについて話している限り、私はあなたが作成した限られた数Object Propertiesについて話していると思います. その場合、各プロパティの変更をキャッチして、log sheettxt や dat などの任意の外部ファイルに書き込むことができます。確かに、値を頻繁に変更する場合は特に、コードに時間がかかりObject Propertiesます。ただし、予測できなかったことが起こった場合はObject Properties、ログから の最後の値を読み取ることができます。

さらに、Windows システム レジストリに値を保持しようとすることもできますが、Object Propertiesそれがプログラムの効率にどの程度影響するかはわかりません。

于 2013-10-23T07:00:57.627 に答える