J'ai un formulaire utilisateur avec une zone de texte. Je souhaite sélectionner le texte dans (surligner) après l'événement keyDown.

Il existe certaines restrictions à ce que l'utilisateur final peut entrer. En cas de mauvaise saisie, un message apparaîtra et le texte de la zone de texte invitant l'utilisateur à saisir quelque chose doit être sélectionné.

J'utilise le code suivant:

Me.txtbox_add_folder.SetFocus
Me.txtbox_add_folder.SelStart = 0
Me.txtbox_add_folder.SelLength = Len(Me.txtbox_add_folder.Text)

Le setFocus ne fonctionne pas. Il semble que ce soit parce que setFocus déclenche une série d'autres événements voir cette discussion .

La solution proposée dans une discussion différente est d'inclure un DoCmd.CancelEvent ou un Cancel = True, afin que le focus ne passe pas à un autre contrôle, mais ces commandes ne fonctionnent pas sur Excel.

0
GigaByte123 15 nov. 2017 à 19:20

4 réponses

Meilleure réponse

J'ai enfin trouvé une solution. En fait, le focus a été perdu automatiquement après l'événement, donc pour éviter cela, il faut désactiver le paramètre TabStop dans les propriétés.

0
GigaByte123 22 nov. 2017 à 13:57

Ma solution a consisté à activer l’arrêt de tabulation sur TOUS les éléments comportant un arrêt de tabulation, à l’exception de la zone de texte en question

Ensuite, après que l'application ait fait tout ce que je lui ai demandé de faire avec l'entrée de zone de texte, utilisé Application.SendKeys "{TAB"}

Je sais que c'est grossier, mais lorsque vous souhaitez utiliser la zone de texte comme entrée de lecteur de code à barres de l'autre côté de la pièce.

Cela a fonctionné pour moi, mais c'est un formulaire utilisateur très simple.

0
user3279899 11 sept. 2019 à 16:07

Cette technique est un peu piratée, mais elle a fonctionné pour moi avant. Il place le curseur dans la zone de texte et exécute une commande Ctrl + A (tout sélectionner), qui mettrait en évidence le texte dans cette zone de texte.

Me.txtbox_add_folder.SetFocus
SendKeys "^A"
0
Robby 15 nov. 2017 à 18:09
 Application.enableevents = false
 Me.txtbox_add_folder.SetFocus
 Me.txtbox_add_folder.SelStart = 0
 Me.txtbox_add_folder.SelLength = Len(Me.txtbox_add_folder.Text)
 Application.enableevents = true
0
Harassed Dad 15 nov. 2017 à 16:30
47312397