Come faccio a sapere se un oggetto è già referenziato?
-
06-07-2019 - |
Domanda
In alcuni VBA collegati a un foglio di calcolo di Excel 2003 ho bisogno di usare alcuni oggetti che impiegano un po 'di tempo per istanziare, quindi voglio fare la cosa' set 'una volta ...
È più facile mostrare il codice che scrivere una spiegazione!
' 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
Come posso verificare se myObj è già stato impostato?
Ho provato IsNull (myObj) e IsEmpty (myObj) - entrambi hanno saltato il 'set', indipendentemente dallo stato di myObj. Non posso farlo
if myObj = Nil then
o
if myObj = Empty then
o
if myObj = Nothing then
Qualche idea?
SAL
Soluzione
Questo dovrebbe funzionare:
If myObj IS Nothing Then
(nota "IS") Se ciò non funziona, allora deve esserci un'inizializzazione asincrona implementata specificatamente da quella Classe perché le chiamate init COM sono sincrone per impostazione predefinita. Pertanto, è necessario controllare il documento o parlare con lo sviluppatore della classe Big per alcune proprietà o un metodo di sincronizzazione che è necessario attendere.