1

Excel 2003 スプレッドシートに添付された VBA では、インスタンス化に時間がかかるオブジェクトを使用する必要があるため、「設定」を一度だけ実行したい...

説明を書くよりもコードを見せる方が簡単です!

' Declare the expensive object as global to this sheet
Dim myObj As SomeBigExpensiveObject

Private Sub CommandButtonDoIt_Click()

   ' Make sure we've got a ref to the object
   If IsEmpty(myObj) Then  ' this doesn't work!
      Set myObj = New SomeBigExpensiveObject
   End If

   ' ... etc

End Sub

myObj が既に設定されているかどうかを確認するにはどうすればよいですか?

IsNull(myObj) と IsEmpty(myObj) を試しました - myObj の状態に関係なく、どちらも「セット」をスキップします。できない

if myObj = Nil then

また

if myObj = Empty then

また

if myObj = Nothing then

何か案は?

SAL

4

1 に答える 1

6

これはうまくいくはずです:

    If myObj IS Nothing Then

(「IS」に注意してください)それが機能しない場合、COM init 呼び出しはデフォルトで同期的であるため、そのクラスによって具体的に実装された非同期初期化が必要です。そのため、待機するプロパティまたは同期メソッドの Big クラスのドキュメントを確認するか、開発者に相談する必要があります。

于 2009-06-18T16:57:16.520 に答える