您没有为加载项分配快捷方式。相反,您为 macro 分配了一个快捷方式,即标准模块中的 Public Sub 过程。
所以您的代码文件可能如下所示:
Option Explicit
Public Sub Calculate()
'...code...
End Sub
在记事本中打开它。我看起来像这样:
Attribute VB_Name = "Module1"
Option Explicit
Public Sub Calculate()
'...code...
End Sub
在Public Sub Calculate() 下,您要添加一个属性,使文件看起来像这样:
Attribute VB_Name = "Module1"
Option Explicit
Public Sub Calculate()
Attribute Calculate.VB_ProcData.VB_Invoke_Func = "C\n14"
'...code...
End Sub
这正是 Excel 的宏记录器分配宏热键的方式:无需任何 Application.OnKey 变通方法。
保存文件,将其导入您的 VBA 项目:Ctrl+Shift+C 现在将调用该宏。
如果您使用的是Rubberduck,请忘记以上所有内容,只需在 VBA 编辑器中转到您的模块,找到该过程并像这样注释它:
Option Explicit
'@ExcelHotkey("C")
Public Sub Calculate()
'...code...
End Sub
"C" 将在哪里设置热键 Ctrl+Shift+C;我强烈建议不要使用"c" 以避免劫持Ctrl+C(复制)。
调出代码检查工具窗口,点击“刷新”按钮;在“Rubberduck Opportunities”下应该有一个关于注释和属性不同步的检查结果警告 - 从“修复”菜单中选择“添加成员属性”,你就完成了 - 不需要导出/编辑/导入或处理使用任何晦涩的语法,如果您想更改热键,只需相应地编辑注释并重新同步注释和属性。
更多信息请参见VB_Attribute annotations。
至于将 VBA 项目保存为加载项,只需将 VBA 项目的宿主工作簿保存为 .xlam 加载项文件,然后完全关闭 Excel 并重新打开它 - 从开发人员功能区选项卡加载 .xlam “Excel 加载项”按钮(如果 .xlam 文件不在列表中,请点击“浏览”以找到它)。