在Excel窗口中,我可以通过以下方式为我的宏指定快捷键:
我可以在VBE窗口中使用VBE菜单栏来分配吗?
答案 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 可能删除基础属性而不会发出警告。