Excel 2016 - QAT和宏

时间:2018-05-23 03:04:16

标签: excel excel-vba vba

我构建了一些宏并将VBA项目保存为.xlam(Excel Add In)文件。当我转到Excel>时,宏(公共子)是可见的。文件>选项>快速访问工具栏(QAT)>选择“宏”'从左下拉菜单中。然后我可以将宏添加到QAT中,以便用户可以单击工具图标来运行这些宏。

我发现了一种非常奇怪的行为。这就是以前的情况,一切都很正常。

Quick Access Toolbar Customization VBA Editor

这是以后的情况。事情开始变得怪异。

QAT After Editor After

唯一的区别是我将Sub的参数类型从内置变量类型更改为自定义类类型。但我还没有运行宏。我只是输入代码。但Excel更改了另外两个宏的显示我没有编辑(宏名称是Check()和CheckAndFix())。

所以问题是:

1)为什么在我输入代码时Excel GUI会显示不同的格式?它似乎取决于我键入的变量类型?我不知道IntelliSense对Excel用户界面有这样的影响。

2)为什么Excel改变了我没有触及的另外两个Subs的显示?

顺便说一下,即使在计算机重启后,这种行为也是可以重现的。即我可以更改String和cSettings之间的参数类型,并观察到相应的宏列表格式发生了变化。

谢谢!

1 个答案:

答案 0 :(得分:0)

我终于搞清楚了!

每当代码引用未定义的数据类型时,QAT定制都无法正常工作。症状是:

1)您将看到工作簿名称作为列表上宏名称的前缀。在正常情况下,您只会看到宏名称。

2)如果您将宏关联到QAT按钮。那个按钮不起作用。每当您点击该按钮时,它都会说" 无法运行宏' XXX'。宏可能在此工作簿中不可用,或者可能禁用所有宏"。这是误导性的,因为宏存在并允许所有宏。

您可能会问 - "为什么您的代码会引用某些未定义的数据类型?"这是因为我的代码引用了一些需要额外库的其他数据类型(例如Dictionary)(例如" Microsoft Scripting Runtime)。如果未手动配置库引用,则数据类型将变为“未定义”。

我很惊讶该程序没有抛出编译错误或运行时错误。相反,它给出了消息"宏可能不适用于此工作簿"。