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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top