首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rubberduck :什么会导致Resolver错误?

Rubberduck :什么会导致Resolver错误?
EN

Stack Overflow用户
提问于 2018-08-29 15:47:40
回答 2查看 548关注 0票数 4

感谢这个问题:已禁用Rubber鸭UI子菜单。,我知道我可能必须按下“刷新按钮”才能使用RubberduckVBA

其中一个可以跟随的错误显然是"Resolver错误“。

这样的解析器错误可能发生的不同情况是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-31 08:08:11

至少有一种情况是:

A函数或Sub不编译,而且开发人员在运行VBA项目时不知道这一点,因为Sub从未被调用过。

解决方案:

这个“垃圾”代码可以在Rubber鸭的 跟踪级日志 .中找到。

以我为例:

代码语言:javascript
复制
Sub CleanSheetOut()
Worksheets(sheetOut).Range("A1:XFD10485576").Clear
Worksheets(sheetOut).Range("A1:XFD10485576").Interior
        .Pattern = xlNone
       .TintAndShade = 0
     .PatternTintAndShade = 0
End Sub

...was不正确(没有编译),但从未被调用,因此项目运行良好,但Rubber鸭子无法解决。

正确的代码:

代码语言:javascript
复制
Sub CleanSheetOut()
   Worksheets(sheetOut).Range("A1:XFD10485576").Clear
   With Worksheets(sheetOut).Range("A1:XFD10485576").Interior
      .Pattern = xlNone
      .TintAndShade = 0
      .PatternTintAndShade = 0
   End With
End Sub

...compiles并让Rubber鸭正常地解析和解析。

原木:

..。显示了故障子和在哪个模块我可以找到它。

Rubber鸭子开发团队的洞察力:

VBE是否动态编译取决于Tools->Options菜单编辑器选项卡右下角的编译设置。 我们实际上尝试编译项目,并警告用户项目不编译。然而,前面提到的VBE设置可能会对此产生干扰。此外,刷新前的编译可能会在Rubber鸭子自己的设置中被停用。

有关更多细节,请参见此Github螺纹

票数 1
EN

Stack Overflow用户

发布于 2018-08-29 16:12:24

TL;DR: Rubber鸭子已经过了一个新的“官方”版本!

免责声明:我管理并贡献给Rubber鸭开放源码软件项目。

在遍历解析树时抛出异常。很难确切地知道发生了什么,因为parsing+resolving VBA代码是非常复杂的多步过程

要找出具体的错误所在,您需要查看日志--默认情况下禁用日志记录(相当冗长),需要通过“设置”对话框启用它:

将解析器/解析器正在执行的所有操作的全部血淋淋的详细信息设置为跟踪,或者将只包含异常信息的较少冗长的日志设置为Error;然后您可以将此日志(或其中的一部分)发布到新发行中,项目开发人员将及时标记/标记它,检查日志/异常详细信息,并确定该问题是否在稍后的预发行版构建中修复,或者它是否是一个需要修复的新错误。

由于几乎每个特性都需要对VBE中的代码有一个准确的理解,Rubber鸭开发人员非常重视解析器/解析器问题。

如果您使用的是最新的“绿色”版本(v2.2.0),那么我非常肯定这个问题从那时起就已经解决了。最新的“预发行版”构建在自动完成功能方面存在恼人的问题(肯定会在v2.3.0中修复),但是解析器现在运行得很好:)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52081487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档