【问题标题】:Spurious "User-defined type not defined" error in Microsoft Word VBAMicrosoft Word VBA 中的虚假“未定义用户定义类型”错误
【发布时间】:2014-07-27 16:25:14
【问题描述】:

我有一个包含一些代码和一些参考的 Microsoft Word 模板,几个月来一直运行良好,但每当我打开它或尝试编译它时,它就开始抛出一个虚假的“用户定义的类型未定义”错误。

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

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

  • 显示错误时没有代码突出显示。

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

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

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

有什么想法吗...?

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

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

    【讨论】:

    • 我必须同意。我有同样的错误。那是去年,但我确信参考文献的顺序不正确。可能是自动更新的参考。这很令人沮丧,因为模板已经工作多年没有问题。
    • 此外,在类初始化期间可能出现静默错误(在错误恢复下一个或类似情况下)。确保“后台编译”已关闭。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      我的问题出现(我认为)在我取消了搜索和替换(Ctrl+Z)之后。没有突出问题,只有编译时出现“用户定义的类型未定义”错误消息。

      我试过了:

      1) 重启电脑
      2) 更改参考顺序
      3) 一次删除一个函数/过程、模块。

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

      解决方案:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          我在使用 Excel 2013 时遇到了同样的问题。

          当我对自定义类的名称进行搜索和替换时,它就开始了。 在对所有对它的引用进行搜索和替换后,我更改了类的名称,然后立即开始出现虚假错误。

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

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

          【讨论】:

            【解决方案6】:

            查看this link 了解可能相关的 Microsoft 错误。

            TLDR:

            对可能需要重新引用的包/插件/任何内容的引用。检查菜单中的工具 -> 参考

            此外,如果您安装 Microsoft 安全公告 960715,某些控件似乎会被杀死。有些修复可能对您有用,也可能对您无效。这个博客上有一篇好文章:

            VSOD Blog

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-05-29
              • 1970-01-01
              相关资源
              最近更新 更多