我刚刚在Windows 10操作系统上安装了Rubberduck VBE加载项v2.0.11.2453(MSIL)。

当我在Excel中打开启用宏的Excel工作簿并启动VBA编辑器时,Rubberduck启动,但Rubberduck菜单下的所有命令均被禁用。

我究竟做错了什么?

vba - Rubberduck UI子菜单已禁用-LMLPHP

最佳答案

免责声明:我积极参与Rubberduck加载项的开发。


你没做错=)

在早期的alpha 2.x发行版中,我们发现在启动时启动初始解析会导致问题(严重崩溃),因为从本质上来说,该插件在VBE完成为项目设置对象模型之前就已经准备好了。在IDE中加载。基本上,VBE在完全完成自身构建之前会加载其加载项,因此我们不能仅在启动时启动解析任务。

因此,我们禁用了初始/自动解析功能,这就是为什么它需要手动进行(暂时)的原因。

Rubberduck命令栏(默认情况下停靠在IDE的顶部,在主命令栏的正下方)包含一个“刷新”按钮:

vba - Rubberduck UI子菜单已禁用-LMLPHP

单击该按钮会将解析器状态从“待处理” /“参与”更改为“就绪” /“打印”(经过多种状态之后)。

多数Rubberduck命令将在状态为“已解析”(不会持续很长时间-不久后立即切换为“解析标识符”)后启用,并且重构在“就绪”状态下启用(甚至在检查之前)完成运行)。

您还会在代码资源管理器,测试资源管理器,检查结果和Todo Explorer工具窗口的工具栏中找到“刷新”命令按钮。

当Rubberduck在后台工作时,您应该能够浏览/导航代码并使用VBE,但请注意,Rubberduck解析代码时修改代码可能会导致某些解析器错误状态。我们假设IDE中的代码是可编译的=)

可以将该按钮想像为“好吧,好了,我已经完成了代码更改,现在可以与IDE同步”:加载项需要知道每个单个令牌的确切编辑器位置,以便可以正常工作。在不同步的解析器状态上重构或应用检查快速修复绝对不是一个好主意!

就是说,在启动时禁用所有菜单有点懒惰(也很笨拙:例如,即使菜单被禁用,用于显示检查结果和代码浏览器工具窗口的热键也可以使用)-我们将在下一个版本中修复该问题,并且初始解析也应该再次自动进行(我们将使其延迟一段时间后重新启动,以使VBE有机会完成启动)。

10-08 13:55