Pregunta

En algunos VBA adjuntos a una hoja de cálculo de Excel 2003, necesito usar algunos objetos que demoran un poco en crear una instancia, por lo que solo quiero hacer lo 'set' una vez ...

¡Es más fácil mostrar el código que escribir una explicación!

' 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

¿Cómo puedo verificar si myObj ya se ha configurado?

He intentado IsNull (myObj) e IsEmpty (myObj); ambos omiten el 'conjunto', independientemente del estado de myObj. No puedo hacer

if myObj = Nil then

o

if myObj = Empty then

o

if myObj = Nothing then

¿Alguna idea?

SAL

¿Fue útil?

Solución

Esto debería funcionar:

    If myObj IS Nothing Then

(tenga en cuenta el " IS ") Si eso no funciona, entonces debe haber una inicialización asincrónica implementada específicamente por esa Clase porque las llamadas de inicio COM son sincrónicas por defecto. Por lo tanto, debe verificar el documento o hablar con el desarrollador sobre la clase Big para obtener alguna propiedad o método de sincronización para que pueda esperar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top