我的朋友与我共享一个.bas文件,并告诉我在vbEditor中将其另存为.xlam以将其作为外接程序。
我已经浏览了加载项,并能够在我的工作簿中启用它。
是否可以为外接程序分配键盘快捷键?现在,该加载项文件中只有一个子。
我尝试用
编写另一个子Application.onKey "+^{C}" ,'Calculate'
但是它不会触发子程序被执行。
答案 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文件)。