在VBE窗口中分配快捷键

在Excel窗口中,我可以通过以下方式为我的macros指定一个快捷键:

  1. 转到“开发人员”选项卡
  2. 触摸macrosbutton
  3. 在结果对话框中触摸选项…

在这里输入图像说明

我可以在VBE窗口内使用VBE菜单栏来分配吗?

另外,如果你想用VBA来做,你可以做如下的事情:

Sub SetShortcutKeys() With Application .OnKey Key:="^+K", Procedure:="YourMacroGoesHere" End With End Sub 

Application.OnKey方法保持快捷方式与过程分离(这使得维护变得困难),并且最终可能会产生冲突 – 特别是如果您已经使用“macros”对话框Application.OnKey属性指定了键。 而且,当然,您需要SetShortCutKeys代码在workbook_open上运行,而这可能无法始终运行。

幸运的是, 可以在VBA中和过程本身中分配快捷键,但是您需要导出模块,编辑文本文件,然后重新导入。 不幸的是,虽然VBA确实维护代码,但快捷键似乎只能在Excel中工作。 也许这是主机应用程序可以select支持的VBAfunction。

假设您在标准模块中具有以下VBA:

 Option Explicit Public Sub Bar() MsgBox "Bar" End Sub 

如果您在Excel中使用“macros”对话框,并为Barmacrosselect快捷键Ctrl+Shift+T ,然后将模块导出到文本文件,则会发现模块源为:

 Attribute VB_Name = "Module1" Option Explicit Sub Bar() Attribute Bar.VB_ProcData.VB_Invoke_Func = "T\n14" MsgBox "Bar" End Sub 

请注意Attribute Bar.VB_ProcData.VB_Invoke_Func = "T\n14"属性,该属性在VBIDE中不可见,但在底层源中由VBA保留。 T\n14中的T\n14是区分大小写的键( 意味着一个Shift ), 我认为 \n14必须引用Ctrl键。 通过遵循VB属性命名模式和语法,并在其他过程中包含类似的行,可以使用文本编辑器在其他过程中分配快捷键,然后在完成后,可以将修改后的模块导回到VBA项目。

请注意,一旦您导入修改后的模块,您将不再能够看到属性行,并且需要注意不要更改过程中的参数名称或数量,因为VBIDE 可能会删除底层属性没有警告你。