将键盘快捷方式分配给Microsoft Excel加载项

时间:2019-09-20 16:39:43

标签: excel vba excel-addins

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

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

是否可以为外接程序分配键盘快捷键?现在,该加载项文件中只有一个子。

我尝试用

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

但是它不会触发子程序被执行。

1 个答案:

答案 0 :(得分:1)

您没有为外接程序分配快捷方式。相反,您为分配了一个快捷方式-即标准模块中的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机会”下,应该有一个关于注释和属性不同步的检查结果警告-从“修复”菜单中选择“添加成员属性”,然后完成-无需导出/编辑/导入或交易使用任何晦涩的语法,如果您想更改热键,只需相应地编辑注释并重新同步注释和属性即可。

有关更多信息,请参见VB_Attribute annotations


关于将VBA项目另存为加载项,只需将VBA项目的宿主工作簿另存为.xlam加载项文件,然后完全关闭Excel并重新打开-从“开发人员功能区”选项卡的.xlam中加载“ Excel加载项”按钮(如果不在列表中,请单击“浏览”以找到.xlam文件)。