Woher weiß ich, ob ein Objekt bereits verwiesen wird?
-
06-07-2019 - |
Frage
In einer VBA, die an eine Excel 2003 -Tabelle beigefügt ist, muss ich einige Objekte verwenden, die eine Weile dauern, bis ich instanziiert ist - also möchte ich nur das "Set" -Ding einmal machen ...
Es ist einfacher, dass der Code der Show zeigt, als eine Erklärung zu schreiben!
' 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
Wie kann ich überprüfen, ob MyObj bereits festgelegt wurde?
Ich habe Isnull (myobj) und isempty (myobj) ausprobiert - beide überspringen das "Set", unabhängig vom Zustand von Myobj. Ich kann nicht
if myObj = Nil then
oder
if myObj = Empty then
oder
if myObj = Nothing then
Irgendwelche Ideen?
Sal
Lösung
Das sollte funktionieren:
If myObj IS Nothing Then
(Beachten Sie das "IS") Wenn dies nicht funktioniert, muss es eine asynchrone Intialisierung geben, die speziell von dieser Klasse implementiert wird, da die COM -init -Aufrufe standardmäßig synchron sind. Sie müssen also den DOC nach dem Entwickler überprüfen oder mit der großen Klasse über eine Eigenschaft oder eine Synchronomethode sprechen, auf die Sie warten können.