オブジェクトがすでに参照されているかどうかを知るにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1013860

質問

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

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

' 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

役に立ちましたか?

解決

これは動作するはずです:

    If myObj IS Nothing Then

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top