Como sei se um objeto já foi referenciado?
-
06-07-2019 - |
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
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.