VBA vérifie si l'objet est défini

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

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

59
demandé sur Lance Roberts 2010-04-13 21:20:37

2 réponses

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

Ou, si vous préférez l'inverse:

If Not obj Is Nothing Then
    ' obj already set / initialized. '
Else
    ' need to initialize obj: '
    Set obj = ...
End If
95
répondu stakx 2010-04-13 17:22:01

Le moyen (non) sûr de le faire-si vous êtes d'accord avec ne pas utiliser l'option explicit-est...

Not TypeName(myObj) = "Empty"

Il gère également le cas si l'objet n'a pas été déclaré. Ceci est utile si vous voulez 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 Variant vide. Il élimine le besoin d'un booléen auxiliaire pour gérer le comportement.

1
répondu Cool Blue 2016-11-03 13:10:50