2009-08-27 6 views
3

J'ai créé une macro pour Excel qui affichera un formulaire contenant un champ de bouton et de texte. Y at-il un moyen d'assigner des raccourcis clavier tels que 'ctrl + Enter' ou 'F12' aux boutons? La touche de raccourci devrait fonctionner quel que soit le champ ou le bouton sur lequel l'accent est mis.Affectation de touches d'accès rapide aux boutons des formulaires créés pour Excel vba

(jusqu'à présent, j'ai réussi à créer des boutons/fields_Keydowns pour vérifier MSForms.ReturnInteger pour vbKeyF12, mais je dois le faire pour tous les domaines et le bouton, est-il un moyen plus facile?)

Say, je 2 choses sur la forme, le bouton « CommandButton1 » et textfield « TextBox1 »

Code

pour le bouton:

Private Sub CommandButton1_click() 
ActiveCell.FormulaR1C1 = UserForm1.TextBox1.Text 
End Sub 

le raccourci clavier sera utile quand j'ajouter dans plusieurs champs et boutons ...

Comment puis-je définir le bouton 'Echap' pour fermer/masquer le formulaire?

Répondre

5

Pour définir la touche 'Échap' afin d'activer votre bouton pour fermer/masquer le formulaire: D'abord, vous avez besoin d'un bouton dont l'événement Click masque votre formulaire. Définissez ensuite la propriété 'Annuler' de ce bouton sur True.

Lorsque votre formulaire est affiché et que vous appuyez sur Echap, le formulaire se ferme. Pour un 'HotKey', définissez la propriété Accelerator de votre bouton à une lettre, puis lorsque votre formulaire est ouvert, si vous appuyez sur Alt + [votre lettre], l'événement Click de ce bouton se déclenchera.

+0

Hey, merci Stewbob. La propriété 'Annuler' est utile! Pour le raccourci clavier, alt + [lettre] n'est pas vraiment ce que je veux. Est-il possible de raccourcir un bouton avec les touches Ctrl + Entrée ou F1-F12 à la place? – Yoga

+1

Vous ne savez pas, vous devrez en expérimenter avec la propriété Accelerator. – Stewbob

1

La seule façon de le faire est d'ajouter un événement KeyUp pour chaque contrôle de votre forme qui appelle un clavier central manipulation de routine:

Option Explicit 

Private Sub CommandButton1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    HandleKey KeyCode 
End Sub 

Private Sub CommandButton2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    HandleKey KeyCode 
End Sub 

Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    HandleKey KeyCode 
End Sub 

Private Sub HandleKey(KeyCode As MSForms.ReturnInteger) 
    MsgBox KeyCode 
    Select Case KeyCode 
    Case 112 'F1 
     'Do something because F1 was pressed 
    Case 113 'F2 
     'Do something because F2 was pressed 
    Case 114 'F3 etc. 
    End Select 
End Sub 
Questions connexes