オブジェクトがすでに参照されているかどうかを知るにはどうすればよいですか?
-
06-07-2019 - |
質問
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クラスについては、ドキュメントを確認するか、開発者に相談する必要があります。
所属していません StackOverflow