VBA: Conditionnel n'Est Rien
Il y a un If
état dans une application VBA comme on le voit ci-dessous:
If Not My_Object Is Nothing Then
My_Object.Compute
Lorsque le code est exécuté en mode debug, j'ai trouvé que le If
condition renvoie une vrai même lorsque My_Object
a "Pas de Variables".
Quelqu'un pourrait m'expliquer pourquoi? Je veux My_Object.Compute
être exécutée uniquement lorsque My_Object
existe.
Comment est
Pouvez-vous préciser ce que vous entendez par "l'absence de variables"? Si My_Object n'est Rien, ce n'est certainement signifie qu'il n'est pas en pointant sur un objet. De Plus, ce qui est la définition de type de My_Object?
"Je veux My_Object.Calculer à être exécutée que lorsque My_Object existe." Votre souhait est accordée. (Sens, est-il un scénario où ce serait pas être le cas?!)
GSerg, Joel Goodwin, My_Object est un objet d'une classe à partir d'une bibliothèque externe. En mode débogage, Lorsque la condition if est sur le point d'être exécuté, l'ajout d'une montre pour My_Object montre <Pas de Variables>
Est-il une bibliothèque externe aucun d'entre nous aurait entendu parler?
My_Object
déclaré?Pouvez-vous préciser ce que vous entendez par "l'absence de variables"? Si My_Object n'est Rien, ce n'est certainement signifie qu'il n'est pas en pointant sur un objet. De Plus, ce qui est la définition de type de My_Object?
"Je veux My_Object.Calculer à être exécutée que lorsque My_Object existe." Votre souhait est accordée. (Sens, est-il un scénario où ce serait pas être le cas?!)
GSerg, Joel Goodwin, My_Object est un objet d'une classe à partir d'une bibliothèque externe. En mode débogage, Lorsque la condition if est sur le point d'être exécuté, l'ajout d'une montre pour My_Object montre <Pas de Variables>
Est-il une bibliothèque externe aucun d'entre nous aurait entendu parler?
OriginalL'auteur StarDotStar | 2011-12-12
Vous devez vous connecter pour publier un commentaire.
Basé sur votre commentaire Issun:
Vous avez besoin de vérifier une des propriétés de l'objet. Sans nous dire ce que l'objet est, nous ne pouvons pas vous aider.
J'ai fait le test plusieurs objets communs et de constater qu'un instancié
Collection
avec aucun des éléments ajoutés montre<No Variables>
dans la fenêtre espion. Si votre objet est bien d'une collection, vous pouvez vérifier pour la<No Variables>
condition à l'aide de la.Count
propriété:Il est également intéressant de noter que si vous déclarez un objet
As New
puis leIs Nothing
vérifier devient inutile. La raison en est que, lorsque vous déclarez un objetAs New
ensuite, il est créé automatiquement quand il est d'abord appelée, même si la première fois que vous l'appelez, est de voir si il existe!Cela ne semble pas être la cause de votre problème spécifique. Mais, depuis, d'autres peuvent trouver cette question à travers une recherche sur Google, j'ai voulu l'inclure, car c'est un erreur de débutant.
.Value
d'une propriété, que l'objet lui-même, car bien sûr, l'objet est instancié, il existe, et doncIs Not Nothing
. J'ai extrapolé qu'à partir de cette réponse et de résoudre un problème j'ai souffert qui était semblable à l'OP est en train de tester un blanc de la chaîne de valeur, que j'ai eu à faire avec<> ""
, pas laIs Nothing
test. Merci - super réponse.OriginalL'auteur mwolfe02
Juste parce que votre objet de classe n'a pas de variables ne signifie pas qu'il n'en est rien. De la déclaration et de l'objet et de la création d'un objet sont deux choses différentes. De regarder et de voir si vous êtes à la définition/création de l'objet.
Prenez, par exemple, le dictionnaire de l'objet juste parce qu'il ne contient pas de variables ne signifie pas qu'il n'a pas été créé.
Toutefois, si vous déclarez un objet, mais jamais le créer, ce n'est rien.
Sans voir ton code et ce que l'objet est, je crains que je ne sais pas comment vous aider.
Un
dict
exemple! quelle surprise 🙂 - un bon exemple de la façonOriginalL'auteur aevanko
Dans mon exemple de code, j'ai été la mise
my object
à rien, et je ne pouvais pas obtenir le "non" de la partie de l'instruction if pour travailler avec l'objet. J'ai essayéif My_Object is not nothing
et aussiif not My_Object is nothing
. Il est peut-être juste une syntaxe chose que je ne peux pas comprendre mais je n'ai pas de temps à perdre, donc j'ai fait un peu de solution de contournement comme ceci:If My_Object Is Not Nothing
aussi, mais votre autre forme on dirait qu'il est sur le droit chemin. Avez-vous essayéIf Not (My_Object is Nothing) Then ' Do something
?OriginalL'auteur WannabeProger