Pergunta

Em algum VBA anexado a uma planilha do Excel 2003, preciso fazer uso de alguns objetos que demoram um pouco para instanciar - então eu só quero fazer a coisa do 'conjunto' uma vez ...

É mais fácil o programa do código do que escrever uma explicação!

' 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

Como posso verificar se o Myobj já foi definido?

Eu tentei isnull (myobj) e isempty (myobj) - ambos pularem o 'conjunto', independentemente do estado de Myobj. Eu não posso fazer

if myObj = Nil then

ou

if myObj = Empty then

ou

if myObj = Nothing then

Alguma ideia?

SAL

Foi útil?

Solução

Isso deve funcionar:

    If myObj IS Nothing Then

(Observe o "is") Se isso não funcionar, deve haver intialização assíncrona implementada especificamente por essa classe, porque as chamadas COM Init são síncronas por padrão. Portanto, você precisa verificar o documento ou conversar com o desenvolvedor sobre a grande classe para obter algum método de propriedade ou sincronização para você esperar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top