Erreur Focus textbox
Résolu
sormick
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai plusieurs textbox
J'utilise un code vba qui me permet en cliquant sur une listbox de revenir sur le dernier textbox que j'ai utilisé. Voici le code:
le problème c'est que ce code:
Me.Controls(box.TabIndex + 1).SetFocus
ne fonctionne pas!.je souhaiterais passer à la textbox suivante après avoir validé les informations de la listbox au dernier textbox utilisé.
voici le message d'erreur que j'ai:
le focus ne peut être déplacé sur le contrôle car celui-ci est invisible, non activé..........
Comment faire?
j'ai plusieurs textbox
J'utilise un code vba qui me permet en cliquant sur une listbox de revenir sur le dernier textbox que j'ai utilisé. Voici le code:
Private box As MSForms.TextBox Private Sub TextBox1_enter() Set box = Me.TextBox1 End Sub box.Value = Me.ListBox1.Value Me.Controls(box.TabIndex + 1).SetFocus
le problème c'est que ce code:
Me.Controls(box.TabIndex + 1).SetFocus
ne fonctionne pas!.je souhaiterais passer à la textbox suivante après avoir validé les informations de la listbox au dernier textbox utilisé.
voici le message d'erreur que j'ai:
le focus ne peut être déplacé sur le contrôle car celui-ci est invisible, non activé..........
Comment faire?
2 réponses
-
Bonjour,
en anglais, mais facile a comprendre:
https://www.excelforum.com/excel-programming-vba-macros/530311-vba-control-tab-index.html-
Heuuu je ne suis pas doué en VBA.. désolé.
je n'arrive pas à le faire fonctionner.
j'ai mis le code:
Sub SetFocusByTabIndex(frm as Form, iTab as Integer)
On Error Resume Next
Dim ctl as Control
For each ctl in frm.Controls
If ctl.TabIndex = iTab Then
ctl.SetFocus
Exit For
End If
Next ctl
End Sub
dans un module , puis j'ai mis le code:
Call SetFocusByTabIndex(Me,3) dans la listbox
l'erreur qui s'affiche est:
type défini par l'utilisateur non défini- oui je veux le faire sur plusieurs textbox.j'explique un peu plus:
je commence à saisir sur la textbox1, une liste de valeurs s'affiche sur la listbox.
je clique dessus.la valeur cliqué s'affiche sur la textbox1 puis automatiquement il passe à la textbox suivante. et ainsi de suite pour toutes les textbox.
il y a un total de 35 textbox
-
-
Re,
code corrige pour d'autres au cas ou:
Private box As MSForms.TextBox Private Sub TextBox1_enter() Dim TabTxt As Integer Set box = TextBox1 '????????????????? box.Value = ListBox1.Value TabTxt = box.TabIndex + 1 Call SetFocusByTabIndex(Me, TabTxt) End Sub Sub SetFocusByTabIndex(ByRef MaForm As Object, iTab As Integer) On Error Resume Next Dim ctl As Control For Each ctl In MaForm.Controls If ctl.TabIndex = iTab Then ctl.SetFocus x = ctl.Name Exit For End If Next ctl End Sub