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 ?
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 ?
La manière (non)sûre de le faire - si vous êtes d'accord avec ne pas utiliser l'option explicite - est...
Not TypeName(myObj) = "Empty"
Cela permet également de traiter le cas si l'objet n'a pas été déclaré. C'est utile si vous voulez juste commenter une déclaration pour désactiver un comportement...
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 installe automatiquement une variable non déclarée en tant que type de variante vide. Il élimine le besoin d'un booléen auxiliaire pour gérer le comportement.
Lorsque vous utilisez des variables globales, il est possible de se retrouver dans une situation dans laquelle l'objet est vide. Donc, le code :
If Not obj Is Nothing Then
'obj is already set
Else
'set obj
End If
produit une erreur « objet requis ».
Dans cette situation, les travaux suivants :
'First check it is initialized
If IsObject(obj) Then
'Then check if it is set
If Not obj Is Nothing Then
'obj is set
Else
'set obj
End If
End If
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.