7
votes

Comment accéder à l'étiquette d'un contrôle du code

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


0 commentaires

5 Réponses :


12
votes

avec la zone de texte, vous pouvez essayer xxx

où le contrôle 0 est l'étiquette liée


0 commentaires

1
votes

Si son accès, je pense que c'est

formulaires! VotreformName! Votrefield.value

ou si vous avez une sous-forme sa:

Formulaires! Yourmainform! VotreSubform! Votrefield.value


0 commentaires

5
votes

@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> xxx pré>

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


0 commentaires

1
votes

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> xxx pré>

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


0 commentaires

1
votes

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


0 commentaires