VBA reportez-vous à la zone de texte ou l'Étiquette à l'aide d'une boucle
Je suis en train de remplacer le suivant:
txt1.Text = ""
txt2.Text = ""
txt3.Text = ""
txt4.text = ""
...continues for quite awhile
Avec:
Dim cCont As Control
For Each cCont In Me.Controls
If TypeName(cCont) = "TextBox" Then
'reset textbox value
???
End If
Next cCont
Comment puis-je me réfère à la zone de texte en utilisant le générique de "Contrôle"?
OriginalL'auteur John M | 2011-05-19
Vous devez vous connecter pour publier un commentaire.
Vous avez déjà votre contrôle dans cCont.
Si vous êtes confus par le fait que vous n'obtenez pas la
Text
propriété de l'IntelliSense, juste lancer laControl
à un plus type dérivé:Cela utiliser la liaison anticipée au lieu de la liaison tardive, et vous obtiendrez votre code de suggestions.
Votre commentaire est très pertinent. Il concerne VB.NET qui est différent de VBA, et il n'affecte pas la façon
cText
est utilisé. Personne ne se soucie sicText
est automatiquement mis àNothing
lorsque vous entrez dans la procédure. Le point est, il ne sera pas mis àcCont
jusqu'à ce que vous obtenez dans la boucle.Je suis quelqu'un et je de soins, dang-il!! 😀 Le lien peut avoir été VB.NET mais la variable de durée de vie comme mentionné à partir du lien s'applique également à VBA. Le point est cText vit dans la procédure, et non pas dans la BOUCLE FOR each. Donc, n'auriez-vous pas plutôt un simple groupe de toutes les variables ensemble dans une belle, tendu? J' il est tatillon et je n'ai toujours donné +1 FWIW.
Vous semblez être source de confusion durée de vie avec portée 🙂 durée de Vie = ensemble de la procédure, étendue = ? En VBA, c'est "du point de vue de la déclaration à la fin de la procédure." Dans VB.NET, c'est "du point de vue de la déclaration à la fin de l'enfermer." Le fait qu'une variable vie, à un moment donné ne signifie pas que vous pouvez utilisation. Vous ne pouvez l'utiliser que lorsque la durée de vie et à la portée de chevauchement. C'est pourquoi je trouve souvent qu'il est utile de déclarer des variables dans lesquelles ils sont utilisés.
Tous les contrôles du formulaire d'obtenir énumérés, non seulement les zones de texte. En cas de non-zone de texte va être récupérée, il ne parvient pas à attribuer à un
TextBox
variable. Mais toutes les commandes peuvent être affectés à unControl
variable, qui est la classe de base pour eux.OriginalL'auteur GSerg