Le fichier à télécharger contient:
Les principales caractéristiques:
- Le Module_AsyncSetFocus à importer dans le projet VBA.
- Le UserForm1 comme exemple de mise en œuvre.
Les principales caractéristiques:
- Permet de faire un SetFocus efficient dans la fonction d'évènement Exit() d'un Control de UserForm.
- Lorsque, dans un Control_Exit(), on doit définir le Focus sur un autre Control qui dépend de la valeur saisie (par exemple), l'utilisation directe (synchrone) d'un Control.SetFocus donne des résultats aberrants:
-> 2nd appel récursif de la fonction Control_Exit() sur le SetFocus d'un Control au-delà du Control en TabIndex + 1.
-> Impossibilité de faire un SetFocus sur un Control au-delà du Control en TabIndex + 2.
- La fonction AsyncSetFocus remédie à ce problème en générant un SetFocus asynchrone.
- Cette fonction est aussi utilisable d'une manière générale sans qu'il soit besoin d'être dans un Control_Exit().
- Le fichier joint permet de tester ces différents cas de SetFocus synchrones et asynchrones.
- Placer le Module_AsyncSetFocus dans la projet VBA.
- Dans le code VBA, utiliser la fonction AsyncSetFocus() avec le paramètre ad hoc
VB:.../... Call AsyncSetFocus(Me.TextBox4) .../...
- V1 - Initiale
- V2 - Raccourci le nom de la fonction de AsyncSetFocusOnUserFormControl() à AsyncSetFocus().