Microsoft Word VBA中的虚假“用户定义类型未定义”错误

时间:2009-08-19 16:28:51

标签: vba ms-word word-vba

我有一个带有一些代码和一些引用的Microsoft Word模板,它已经运行了好几个月,但是只要我打开它或尝试编译它就开始抛出虚假的“用户定义类型未定义”错误。

我知道这是一个虚假的错误,因为我没有对代码进行任何重大更改。事实上,我已经将代码转回到最后部署的版本(我知道工作正常),我仍然得到错误。我还注释了模板中的所有代码,但仍然出现错误。我还删除并重新添加了所有引用(相同的错误),并删除了所有引用并逐个添加它们,直到生成的编译错误得到解决,此时我留下了虚假的“用户” - 未定义的定义类型“错误。 (从现在开始,我将把这称为UDTND错误,以避免让你疯狂。)我认为在我重新启动电脑后错误开始出现。它只发生在这个模板上,但我不知道它与这个模板有什么关系。

有趣的是,错误在以下方面与真正的UDTND错误略有不同:

  • 显示错误时,不会突出显示代码。

  • 该对话框标题为“Microsoft Visual Basic”,并包含错误消息,但与真正的UDTND错误不同,它不包含文本“编译错误:”;

  • 在打开模板时会发生这种情况,而不仅仅是在编译模板时(至少,我认为这与正常错误不同)。

我已经尝试过谷歌搜索但我只是从新手开发人员那里得到了大量的结果,询问他们为什么会收到这个错误,并且回复告诉他们他们要么声明缺失的类型,要么纠正有问题的变量类型的拼写,或者添加对缺少的库的引用。我整个下午一直在用我的屏幕撞击我的屏幕,这对我所尝试的所有其他事情(即根本没有)有所帮助。我觉得这与乱搞参考有关,但是他们都很好,我已经删除并重新添加它们,我希望能解决这类问题。

任何想法......?

6 个答案:

答案 0 :(得分:1)

您对“参考”的故障排除是合理的。曾几何时(我不记得确切的错误)我处于同一点,参考排序是关键。当您指定参考时,您会注意到“优先级”调整功能。试验一下,你可以解决这个问题。

答案 1 :(得分:1)

在编译之前编译没有问题的Microsoft Visual Basic 6(MSVB6)代码时,我曾多次遇到“用户定义的类型未定义”问题。这似乎发生在我没有重新启动计算机的长编码会话之后。您可以猜到,我一直在使用Microsoft操作系统。我目前正在使用Windows XP。重新启动计算机通常可以解决问题,因为它经常在Microsoft操作系统上解决。

我已经读过完全符合条件的声明也可以提供帮助,例如“Dim oBar as Foo.Bar”而不是“Dim oBar as Bar”。但是我没有尝试过这种方法。

答案 2 :(得分:1)

我有一个非常类似的问题。

我的问题出现了(我想)刚刚我做了一个我取消的搜索和替换(Ctrl + Z)。没有高兴的问题,只有“”用户定义的类型没有定义“我编译时的错误信息。

我试过了:

1)重启电脑
2)改变参考排序
3)一次删除一个功能/程序,模块。

没用。我的项目是用Excel VBA编写的,这是我找到的解决方案。

解决方案:

我打开了一个新的Excel文件并打开了Visual Basic编辑器。然后,我将所有表单,模块和类模块逐个复制到新文件中。然后我将控制对象(3个命令按钮)从旧工作表复制到新工作表中。现在新文件与旧项目完全相同 - 只有“未定义的用户定义类型”已经消失,问题就解决了。

答案 3 :(得分:0)

是的,引用将是解决此问题的第一步,如前所述,但是在启动时运行的任何事件过程中,id开始注释掉代码(我的经验仅限于Access VBA)

答案 4 :(得分:0)

我在Excel 2013中遇到了同样的问题。

当我进行搜索并替换自定义类的名称时,它就开始了。 我在完成搜索后更改了类的名称,并替换了对它的所有引用,并在此之后立即启动了虚假错误。

我恢复了早期版本广告,确认问题不存在,然后执行相同的搜索并替换并重新命名并再次获得完全相同的行为。

我更改名称的自定义类只有一个使用者,它也是一个自定义类。 我导出,删除并重新加载了唯一的消费者类,问题得到解决。

答案 5 :(得分:-1)

查看this link以查找可能与之相关的Microsoft错误。

<强> TLDR:

对包/ addin /的引用可能需要重新引用。检查工具 - &gt;菜单中的参考

此外,如果您安装Microsoft安全通报960715,则会显示某些控件已被终止。有一些修复可能适用于您,也可能不适合您。这篇博客上有一篇好文章:

VSOD Blog