Définir l’ordre de tabulation des contrôles dans un cadre
L'exemple suivant utilise la propriété TabIndex pour afficher et définir l'ordre de tabulation de contrôles individuels. La propriété TabIndex est une propriété Microsoft Forms 2.0 qui s’applique à chaque contrôle qui peut exister dans un frame. L'utilisateur peut appuyer sur la touche de tabulation pour atteindre le contrôle suivant dans l'ordre de tabulation et afficher la propriété TabIndex de ce contrôle. L’utilisateur peut également cliquer sur n’importe quel contrôle, à l’exception d’un contrôle TextBox ou ScrollBar, pour afficher son TabIndex. L’utilisateur peut modifier la valeur de la propriété TabIndex d’un contrôle en entrant une nouvelle valeur d’index dans le contrôle TextBox et en cliquant sur CommandButton3. La modification de la propriété TabIndex d’un contrôle actualise également la propriété TabIndex des autres contrôles contenus dans le contrôle Frame.
Pour utiliser cet exemple, copiez-en le code vers l’éditeur de script d’un formulaire. Pour exécuter le code, vous devez ouvrir le formulaire afin d’activer l’événement Open. Vérifiez que le formulaire contient :
Une étiquette nommée Label1.
un contrôle TextBox nommé TextBox1 ;
un contrôle Frame nommé Frame1 ;
une zone de texte dans le cadre appelée TextBox2 ;
Deux contrôles CommandButtondans frame nommés CommandButton1 et CommandButton2.
une barre de défilement dans le cadre appelée ScrollBar1 ;
un bouton de commande (ne figurant pas dans le cadre) appelé CommandButton3.
Sub MoveToFront()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
Temp = Frame1.ActiveControl.TabIndex
For i = 0 To Temp - 1
Frame1.Controls.Item(i).TabIndex = i + 1
Next
Frame1.ActiveControl.TabIndex = 0
TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub
Sub CommandButton3_Click()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
If IsNumeric(TextBox1.Text) Then
Temp = CInt(TextBox1.Text)
If Temp >= Frame1.Controls.Count Or Temp < 0 Then
'Entry out of range; move control to front of tab order
MoveToFront
ElseIf Temp > Frame1.ActiveControl.TabIndex Then
'Move entry down the list
For i = Frame1.ActiveControl.TabIndex + 1 To Temp
Frame1.Controls.Item(i).TabIndex = i - 1
Next
Frame1.ActiveControl.TabIndex = Temp
TextBox1.Text = Frame1.ActiveControl.TabIndex
Else
'Move Entry up the list
For i = Frame1.ActiveControl.TabIndex - 1 To Temp
Frame1.Controls.Item(i).TabIndex = i + 1
Next
Frame1.ActiveControl.TabIndex = Temp
TextBox1.Text = Frame1.ActiveControl.TabIndex
End If
Else
'Text entry; move control to front of tab order
MoveToFront
End If
End Sub
Sub Item_Open()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
Set Label1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Label1")
Set CommandButton3 = Item.GetInspector.ModifiedFormPages("P.2").Controls("CommandButton3")
Label1.Caption = "TabIndex"
Frame1.Controls(0).SetFocus
TextBox1.Text = Frame1.ActiveControl.TabIndex
Frame1.Cycle = 2 '2=fmCycleCurrentForm
CommandButton3.Caption = "Set TabIndex"
CommandButton3.TakeFocusOnClick = False
End Sub
Sub CommandButton1_Click()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub
Sub CommandButton2_Click()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.