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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top