在VBE窗口中指定快捷键

时间:2014-05-25 14:01:56

标签: excel vba excel-vba

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

  1. 转到“开发者”标签
  2. 触摸按钮
  3. 在生成的对话框中触摸选项...
  4. enter image description here

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

2 个答案:

答案 0 :(得分:3)

或者,如果您想使用VBA执行此操作,您可以执行以下操作:

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

答案 1 :(得分:3)

Application.OnKey方法使快捷方式与过程分开(这会使维护变得困难),并且您可能最终会遇到冲突 - 特别是如果您使用“宏”对话框Application.OnKey属性。当然,您需要在workbook_open上运行SetShortCutKeys代码,而这可能并不总是在运行。

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

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

Option Explicit

Public Sub Bar()
  MsgBox "Bar"
End Sub

如果在Excel中使用“宏”对话框,并选择Bar宏的快捷键到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中的T\n14是区分大小写的密钥(暗示 a Shift),我认为 {{1}必须引用\n14密钥。通过遵循VB属性命名模式和语法,并在其他过程中包含类似的行,您可以使用文本编辑器在其他过程中分配快捷键,然后,当您完成后,您可以将修改后的模块导入到VBA项目。

请注意,导入修改后的模块后,您将无法查看属性行,并且您需要注意不要更改参数的名称或数量该过程,因为VBIDE 可能删除基础属性而不会发出警告。