2017-03-27 1 views
3

Je voudrais utiliser la combinaison de touches Maj + Alt + [ appeler un sous-programme dans mon projet VBA. Voici le code que j'ai essayé:Comment puis-je utiliser des crochets dans Application.OnKey? (Excel VBA)

J'ai eu aucun problème à l'aide d'autres personnages avec changement et alt, comme les lettres minuscules et des chiffres. Cependant, lorsque je tente d'utiliser le crochet gauche, je reçois l'erreur suivante:

Method 'OnKey' of object '_Application' failed 

J'ai également essayé d'utiliser le support carré de gauche avec toutes les différentes combinaisons Ctrl, Alt, et Décalage. Ils produisent tous la même erreur.

Application.OnKey "^[", "mySubroutine" 
Application.OnKey "+[", "mySubroutine" 
Application.OnKey "%[", "mySubroutine" 
Application.OnKey "^+[", "mySubroutine" 
Application.OnKey "^%[", "mySubroutine" 
Application.OnKey "^+%[", "mySubroutine" 

J'ai aussi essayé d'utiliser le code ASCII pour le crochet gauche (91) comme ceci:

Application.OnKey "+%{91}", "mySubroutine" 

sans chance.

J'ai aussi essayé d'utiliser la fonction Chr() intégré Excel avec cette keycode ASCII:

Application.OnKey "+%" & Chr(91), "mySubroutine" 

qui ne fonctionne pas non plus.

Je cours Excel 2013. Un autre ordinateur dans notre bureau exécute Excel 2003, et bien que cet ordinateur utilise le langage Excel4Macro, il est capable d'utiliser le crochet gauche pour configurer un raccourci clavier.

Il semble que Microsoft a supprimé cette fonctionnalité dans la nouvelle version d'Excel. Cependant, si quelqu'un peut trouver un moyen de le faire fonctionner, je serais reconnaissant!

Répondre

7
Application.OnKey "+%{[}", "mySubroutine" 

codes mêmes remarques que pour SendKeys ...

How to print or send braces () using VBA sendkeys

https://social.technet.microsoft.com/wiki/contents/articles/5169.vbscript-sendkeys-method.aspx

The plus sign "+", caret "^", percent sign "%", tilde "~", and parentheses "()" all have special meanings and must be enclosed within braces "{}". Square brackets "[]" must also be enclosed within braces although they have no special meaning. To specify brace characters themselves, use "{{}" and "{}}".

+0

Impressionnant! Merci beaucoup! (Pourquoi je n'y ai pas pensé ...) – mattbierwirth