为 Microsoft Excel 加载项分配键盘快捷键

Assign a keyboard shortcut to a Microsoft Excel Add-in

我的朋友与我共享了一个 .bas 文件,并告诉我在 vbEditor 中将其另存为 .xlam 以将其作为插件。

我已经在加载项中浏览并能够在我的工作簿中启用它。

有什么方法可以为加载项指定键盘快捷键吗?现在该加载项文件中只有一个 sub。

我尝试用

编写另一个子程序
Application.onKey "+^{C}" ,'Calculate'

但它不会触发要执行的子程序。

您没有为加载项指定快捷方式。相反,您将快捷方式分配给 - 即标准模块中的 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 (Copy).

调出代码检查工具窗口,点击"refresh"按钮;在 "Rubberduck Opportunities" 下应该有一个关于注释和属性不同步的检查结果警告 - "Fix" 菜单中的 select "add member attribute",你就完成了 - 不需要export/edit/import 或处理任何晦涩的语法,如果您想更改热键,只需相应地编辑注释并重新同步注释和属性即可。

有关详细信息,请参阅 VB_Attribute annotations


至于将 VBA 项目保存为加载项,只需将 VBA 项目的宿主工作簿保存为 .xlam 加载项文件,然后完全关闭 Excel 并重新打开它 - 从开发人员功能区选项卡的 "Excel Add-ins" 按钮加载您的 .xlam(如果您的 .xlam 文件不在列表中,请点击 "Browse" 找到它)。