我构建了一些宏,并将VBA工程另存为.xlam (Excel Add In)文件。当我转到Excel >文件>选项>快速访问工具栏(QAT)>从左侧下拉菜单中选择‘宏’时,宏(Public Sub)是可见的。然后,我可以将宏添加到QAT中,这样用户就可以单击工具图标来运行这些宏。
我观察到一种非常奇怪的行为。这是它以前的样子,一切都是正常的。


这是它想要的东西。事情开始变得奇怪了。


唯一的区别是我将Sub的参数类型从内置变量类型更改为自定义类类型。但是我还没有运行宏。我只是在输入密码。但是Excel改变了另外两个我没有编辑的宏的显示(宏名是Check()和CheckAndFix())。
所以问题是:
1)当我输入代码时,为什么Excel GUI显示不同的格式?这似乎取决于我输入的变量类型?我不知道IntelliSense对Excel的用户界面有如此大的影响。
2)为什么Excel更改了另外两个我没有接触的Subs的显示?
顺便说一句,即使在计算机重新启动后,此行为也是可重现的。也就是说,我可以在String和cSettings之间改变参数类型,并观察到宏列表格式也发生了相应的变化。
谢谢!
发布于 2018-05-24 01:43:36
我终于想明白了!
只要代码引用了未定义的数据类型,QAT定制就不会起作用。症状包括:
1)您将看到工作簿名称是列表中宏名称的前缀。在正常情况下,您只会看到宏名称。
2)如果将宏关联到QAT按钮。那个按钮不起作用。每当您单击该按钮时,它都会显示“无法运行宏”‘XXX“。该宏可能在此工作簿中不可用,或者所有宏都可能被禁用”。这是误导性的,因为宏在那里,所有的宏都是允许的。
你可能会问--“为什么你的代码引用了一些未定义的数据类型?”这是因为我的代码引用了一些额外的数据类型(如字典),这些数据类型需要额外的库(如"Microsoft Scripting Runtime“)。如果不手动配置库引用,数据类型将变为”未定义“。
我很惊讶程序没有抛出编译错误或运行时错误。相反,它给出了消息“宏可能不适用于此工作簿”。
https://stackoverflow.com/questions/50479207
复制相似问题