代码之家  ›  专栏  ›  技术社区  ›  gkrogers

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

  •  2
  • gkrogers  · 技术社区  · 15 年前

    我有一个microsoft word模板,其中包含一些代码和一些引用,几个月来一直运行良好,但刚开始在打开或试图编译它时抛出一个虚假的“用户定义类型未定义”错误。

    我知道这是一个虚假的错误,因为我没有对代码做任何重大更改。事实上,我已经将代码回滚到最后一个部署的版本(我知道这个版本工作得很好),但仍然会得到错误。我还注释掉了模板中的所有代码,但仍然得到错误。我还删除并重新添加了所有引用(同一个错误),删除了所有引用并逐个添加回原来的位置,直到最终的编译错误得到解决,此时我只剩下一个虚假的“用户定义类型未定义”错误。(从现在起,我将称之为UDDND错误,以避免使你疯掉。)我认为错误是在重新启动我的PC之后开始弹出的。它只发生在这个模板上,但是我不知道它和这个模板有什么关系。

    有趣的是,错误与真正的udtnd错误在以下方面有着微妙的不同:

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

    • 对话框名为“Microsoft Visual Basic”,包含错误消息,但与实际的UDTND错误不同,它不包含文本“Compile error:”;

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

    我试过用谷歌搜索它,但我刚从新手开发人员那里得到了大量的结果,他们问为什么会出现这个错误,回答告诉他们要么需要声明缺少的类型,纠正有问题的变量类型的拼写,要么添加对缺少的库的引用。我整个下午都在用头撞屏幕,这和我尝试过的其他事情一样有帮助(也就是说一点都没有)。我有一种感觉,这是与一个混乱的参考有关,但如果他们都很好,我已经删除并重新添加他们,我希望这能解决这类问题。

    有什么想法…?

    6 回复  |  直到 10 年前
        1
  •  1
  •   Smandoli    15 年前

    你在参考资料上的问题解决是合理的。很久以前(我不记得准确的错误),我是在同一点,和参考。 排序 是关键。当您指定引用时,您会注意到一个“优先级”调整功能。尝试一下,你就能解决这个问题。

        2
  •  1
  •   5Arete23    13 年前

    在编译微软VisualBasic 6(MSVB6)代码之前,我曾多次遇到“用户定义类型未定义”问题。这似乎发生在我长时间没有重新启动计算机的编码会话之后。你可以猜到,我一直在使用微软操作系统。我目前正在使用WindowsXP。重新启动计算机通常可以修复该问题,就像在Microsoft操作系统上一样。

    我已经看过,完全合格的声明也可以帮助,例如“DimoBar作为Fo.bar”,而不是“Dimabar作为bar”。不过,我还没有尝试过这种方法。

        3
  •  1
  •   rdongart    11 年前

    我也有类似的问题。

    我的问题出现(我想)就在我做了一个搜索和替换,我取消了(ctrl+z)。没有编译问题,只有在编译时“用户定义类型未定义”错误消息。

    我试过:

    1)重新启动计算机
    2)更改参考顺序
    3)逐个移除功能/程序、模块。

    不起作用。我的项目是用Excel VBA编写的,这里是我找到的解决方案。

    解决方案:

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

        4
  •  0
  •   g_g    15 年前

    是的,引用将是解决这个问题的第一步,正如前面所说的,但是如果没有这个id,就开始在启动时运行的任何事件过程中注释代码(我的经验仅限于access vba)

        5
  •  0
  •   Cool Blue    10 年前

    我对excel 2013也有同样的问题。

    它始于我对自定义类的名称进行搜索和替换。 在搜索并替换所有对类的引用之后,我更改了该类的名称,然后错误立即开始。

    我回复到一个早期版本的广告,确认问题不在那里,然后做同样的搜索和替换和重新命名,并得到完全相同的行为再次。

    我更改的自定义类只有一个用户,它也是一个自定义类。 我输出,删除和重新加载唯一的消费类,问题是固定的。

        6
  •  -1
  •   Community CDub    8 年前

    退房 this link 对于可能相关的Microsoft错误。

    TLDR:

    对包/addin/whatever的引用可能需要重新引用。检查 工具->引用 在菜单中。

    此外,如果安装Microsoft安全顾问960715,则某些控件可能会被终止。有些修复方法可能对你有用,也可能对你无效。博客上有一篇好文章:

    VSOD Blog

    推荐文章