VBA 枚举偶尔会出现"Constant Expression Required"错误



我正在使用Excel VBA中类模块中定义的枚举。这一直工作正常,但是每次对枚举变量进行比较时,我已经开始遇到编译错误:

在类cexample中:

Enum MyEnum
    Foo
    Bar
End Enum

其他地方:

If someValue = myEnum.Foo Then

文本.Foo将被突出显示,并且"编译错误:所需的常数表达式"消息弹出。

在Google上进行的搜索表明,这可以随机发生,并在枚举声明可以使其重新开始工作后进行修复。

  • http://www.tek-tips.com/viewthread.cfm?qid=1355882
  • http://www.vbforums.com/showthread.php?405564-固定-constant-expression-expression-required-erquired-error-error-error-error-error-ernum

这真的是VBA中的已知错误吗?我可以做些什么来避免发生这种情况,或者如果它确实出现,可以可靠地使VBA再次工作?

就我而言,关闭和重新打开Excel没有帮助。请问我重新启动PC时。

重新启动后更新:

重新启动我的机器后,问题仍然存在,这令人惊讶。我尝试在枚举定义的前面添加Public(默认情况下它们是公开的,但我认为我会尝试一下),错误消失了。我删除了Public关键字(所以我们又回到了我的原始代码),并且它仍然可以编译并运行正常。

看起来确实是VBA中的一个随机错误。我有兴趣知道是否经常发现经验丰富的开发人员 - 您会建议不要使用枚举吗?还是它在蓝色的月亮中弹出一次,我只是不幸?

进一步开发6周后进行更新:

在我剩下的时间开发该项目的剩余时间里,问题没有复发,因此看起来这是一个罕见的问题。在问题中,我通过编辑和保存枚举定义,然后再消除编辑并再次保存来摆脱错误。最近在项目上做了更多工作后,我发现了一个不同但相似的问题 - 一行代码会出现"类型不匹配"错误,那里没有类型的不匹配,而相同的功能(不变)也可以正常工作。相同的输入。

我看到的一些间歇性错误可能是由于Excel文件中的代码伪像堆积 - 完成了一些读数,我发现VBA代码被编译并保存到文件中。没有"清洁"或"重建所有"选项 - VBA试图自己锻炼哪些需要增量更改。这可能会导致各种奇怪的运行时行为,在您进行大量代码更改的项目中。这可能是我在本工作簿初步开发期间发现的枚举错误的原因。本文中的"在VBA中进行反编译和紧凑的含义"部分给出了一个很好的概述。

大多数提到此问题建议使用VBA编解码器:http://www.appspro.com/utilities/codecleaner.htm。奇普·皮尔森(Chip Pearson)是一位知名且受人尊敬的VBA专家,他说:"我非常强烈地推荐此加载项"。我很惊讶我以前从未遇到过!

似乎是一个错误。

将同一模块的代码复制到新的代码,然后重新编译。这似乎为某些人解决了。

存在类似的修复程序,其中涉及在枚举定义线上进行编辑和删除。

如果这是一个常见的问题,请考虑切换到数字常数。

一个旧问题,但只是经历了这个问题。在枚举上删除了公共定义者,并且汇编还不错。没有重新启动IDE。令人惊讶的是,这仍然在这里。

我今天遇到了这个问题,并找到了另一个可能的解决方案。我要发帖,以防这可能对其他人有所帮助。

以下所有内容都不适合我:

  1. 重新启动Excel
  2. 重新启动Windows
  3. 删除"公共"从我的枚举
  4. 添加"公共"回到我的枚举

我不能尝试使用VBA清洁器加载项,因为这是一台工作计算机,我没有管理员访问。

我没有尝试创建一个新的模块,所以我不知道这是否有效。

但是,关闭Excel并启动新的Excel实例,并使用"打开和修复"&quot&quot&quot&quot&quot'对我有用。这样做:

  1. 关闭所有Excel Windows
  2. 从开始菜单打开Excel
  3. 转到"开放"在左侧
  4. 选择"浏览"在"其他位置"下
  5. 导航到文件您遇到问题
  6. 单击"打开"下拉箭头。在右下方,选择"打开和维修..."

今天对我来说这是对我的,原因是偶然删除的"选项显式"。用Enum声明在模块顶部的声明。当我重新添加它时,它会立即开始工作。

此错误会当时会在没有对枚举或使用或使用或任何相关的代码。对我有用的是将枚举从类移动到我称为" COMMON"的模块,并将枚举公开而不是私人。

我的枚举也遇到了同样的问题,我在声明中增加了公众枚举,问题停止了。无需重新启动。

相关内容

最新更新