Vérification VBA si l’object est défini

J’ai une variable globale qui est une instance de ma classe personnalisée.

Comment puis-je vérifier si l’object est défini ou si je dois l’initialiser?

If obj Is Nothing Then ' need to initialize obj: ' Set obj = ... Else ' obj already set / initialized. ' End If 

Ou, si vous préférez le contraire:

 If Not obj Is Nothing Then ' obj already set / initialized. ' Else ' need to initialize obj: ' Set obj = ... End If 

La façon (in) de le faire – si vous ne voulez pas utiliser l’option explicite – est …

 Not TypeName(myObj) = "Empty" 

Cela gère également le cas si l’object n’a pas été déclaré. Ceci est utile si vous souhaitez simplement commenter une déclaration pour désactiver certains comportements …

 Dim myObj as Object Not TypeName(myObj) = "Empty" '/ true, the object exists - TypeName is Object 'Dim myObj as Object Not TypeName(myObj) = "Empty" '/ false, the object has not been declared 

Cela fonctionne car VBA instanciera automatiquement une variable non déclarée en tant que type de variante vide. Cela élimine le besoin d’un booléen auxiliaire pour gérer le comportement.