Comment savoir si un objet est déjà référencé?
-
06-07-2019 - |
Question
Dans certains VBA attachés à une feuille de calcul Excel 2003, je dois utiliser certains objets dont l’instanciation prend du temps - je ne veux donc que faire le "set" une fois ...
Il est plus facile d'afficher le code que d'écrire une explication!
' 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
Comment puis-je vérifier si myObj a déjà été défini?
J'ai essayé IsNull (myObj) et IsEmpty (myObj) - les deux ignorent l'ensemble, quel que soit l'état de myObj. Je ne peux pas faire
if myObj = Nil then
ou
if myObj = Empty then
ou
if myObj = Nothing then
Des idées?
SAL
La solution
Cela devrait fonctionner:
If myObj IS Nothing Then
(notez le "IS"). Si cela ne fonctionne pas, il doit y avoir une initialisation asynchrone implémentée spécifiquement par cette classe, car les appels d'init COM sont synchrones par défaut. Vous devez donc consulter le document ou parler au développeur de la classe Big pour connaître une propriété ou une méthode de synchronisation à attendre.