2017-03-27 230 views
3

我想使用组合键 + Alt键+[调用子程序在我的VBA项目。这是我曾尝试代码:如何在Application.OnKey中使用方括号? (EXCEL VBA)

我一直在使用其它字符转变和alt,如小写字母和数字没有问题。然而,当我尝试使用左方括号,我得到以下错误:

Method 'OnKey' of object '_Application' failed 

我也曾尝试使用左方括号与所有不同的组合按CtrlAlt键,和Shift。他们都产生相同的错误。

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

没有运气:

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

我也使用ASCII代码用于左括号(91)像这样尝试。

我用Excel内置的CHR()函数与ASCII键码也试过:

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

,没有工作,要么。

我正在运行Excel 2013.我们办公室中的另一台计算机正在运行Excel 2003,尽管该计算机使用的是Excel4Macro语言,但它能够使用左方括号来设置键盘快捷键。

似乎微软在较新版本的Excel中删除了此功能。但是,如果任何人都能想出办法让它工作,我将不胜感激!

回答

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

相同的号码为的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

真棒!非常感谢! (为什么我没有想到...) – mattbierwirth