Souvent, une commande d'étiquette est liée à une zone de texte ou à une autre autre commande similaire. Je sais qu'il existe un moyen d'accéder à l'étiquette par le code, mais je ne me souviens pas de savoir comment le faire.
Quelqu'un peut-il aider? P>
Peut-être quelque chose comme: P>
Me.txtName.Parent!lblName.Value
5 Réponses :
avec la zone de texte, vous pouvez essayer où le contrôle 0 est l'étiquette liée p> p>
Si son accès, je pense que c'est p>
formulaires! VotreformName! Votrefield.value P>
ou si vous avez une sous-forme sa: p>
Formulaires! Yourmainform! VotreSubform! Votrefield.value P>
@astander a fourni la bonne réponse, mais gardez à l'esprit que tous les contrôles n'ont pas le même type de collections de contrôle.
Textboxes, combinés, liste de réponses, les cases à cocher ont un maximum de 1 élément dans leur collection de commandes (la pièce jointe Label), mais si l'étiquette n'est pas attachée, elles n'auront même pas cela, alors .Controls (0) lancera une erreur. P>
Un groupe d'option a plusieurs contrôles, l'étiquette et l'option boutons boutons ou basculer à l'intérieur du cadre. Lorsque vous déposez un groupe d'options sur un formulaire dans la barre d'outils des outils de formulaire, le cadre est créé avec une étiquette connectée, ce sera donc le contrôle avec index 0. Mais si, par exemple, vous supprimez l'étiquette par défaut, ajoutez des boutons d'option et Ajoutez ensuite une étiquette, il ne sera pas index 0, mais indexez .controls.Count - 1. p>
Donc, pour la légende d'un groupe d'options, vous voulez soit faire attention que si vous supprimez. L'étiquette par défaut, vous supprimez également les commandes à l'intérieur du cadre après avoir ajouté l'étiquette. Si ce n'est pas le cas, vous devez nommer l'étiquette et se référer à son nom, car les étiquettes des boutons Option / Toggle font partie de la collection de contrôles du groupe d'options (cela m'a surpris - je m'attendais à être uniquement dans les commandes Collection du bouton Option / Basculer sur lequel ils étaient attachés). P>
Pour éviter ce problème, je peux imaginer un code compliqué dans lequel vous avez bouclé dans la collection de contrôles du groupe d'options à la recherche des étiquettes attachées à l'option / Basculer Les boutons, puis bouclés à travers la collection de contrôles du groupe d'options une seconde fois, cette fois-ci, en regardant uniquement les étiquettes. Quelque chose comme ceci: p> Maintenant, cela ne casse aucune étiquette attachée, il serait donc plus logique de renvoyer le nom de l'étiquette, plutôt que la référence de contrôle : P> Public Function FindOptionGroupLabel(ctlOptionGroup As Control) As String
Dim ctl As Control
Dim strOptionToggleLabels As String
If ctlOptionGroup.ControlType <> acOptionGroup Then
MsgBox ctlOptionGroup.Name & " is not an option group!", _
vbExclamation, "Not an option group"
Exit Function
End If
For Each ctl In ctlOptionGroup.Controls
Select Case ctl.ControlType
Case acOptionButton, acToggleButton
If ctl.Controls.Count = 1 Then
strOptionToggleLabels = strOptionToggleLabels & " " & ctl.Controls(0).Name
End If
End Select
Next ctl
strOptionToggleLabels = strOptionToggleLabels & " "
For Each ctl In ctlOptionGroup.Controls
Select Case ctl.ControlType
Case acLabel
If InStr(" " & strOptionToggleLabels & " ", ctl.Name) = 0 Then
FindOptionGroupLabel = ctl.Name
End If
End Select
Next ctl
Set ctl = Nothing
End Function
Voici un certain code que j'ai écrit pour renommer les étiquettes associées à Optionbuttons. Une étiquette a une propriété mère qui pointe vers le contrôle des étiquettes informatiques. La fonction est assez générale pendant que le sous-programme est écrit pour optionbuttons. Ce code devrait fonctionner pour presque tout, sauf lorsque l'étiquette n'est pas associée, je n'ai fourni aucune récupération pour cela.
Fonction publique PanamecontrolLabel (formname comme chaîne, ControlName comme chaîne)
Dim FRM comme forme
Dim CTL comme contrôle
Dim Ctllabel comme contrôle
Dim ctlparent comme contrôle p> Fonction finale
Sous-PanameOption PanameOptionButtonLabels (Formname en tant que chaîne)
Dim FRM comme forme
Dim CTL sous forme de contrôle p> Set frm = Forms(FormName)
For Each ctl In frm.Controls
If ctl.ControlType = acOptionButton Then
Debug.Print paNameControlLabel(FormName, ctl.Name)
End If
Next ctl
Set frm = Nothing
Probablement en retard, mais je viens de lutter avec cela, et ce qui a fonctionné était de vérifier le type de contrôle pour vous assurer qu'il prend en charge les étiquettes, puis utilisez
ctl.Properties(3) ' For the label name Forms(ctl.Form).Controls(ctl.Properties(3)).Caption ' For the label text