未定义VBA用户定义类型(仅有时)

未定义VBA用户定义类型(仅有时),vba,excel,Vba,Excel,在我的Excel工作簿中,有时会出现以下错误: vba用户定义类型未定义 我知道这通常意味着excel(VBA)不知道代码中有某种类型 奇怪的是,代码运行得非常好,而编译时却没有发生这种情况 此错误有时在应用程序的所有方法中都会随机出现。请按F9键计算族和。 不总是,但有时 相同的行为有一个vbe错误消息,描述如下: visual basic模块包含语法错误 当我点击debug时,它会登陆到application.calculate(full)上,如果我继续执行代码(使用F5),它会继续执行,不

在我的Excel工作簿中,有时会出现以下错误:

vba用户定义类型未定义

我知道这通常意味着excel(VBA)不知道代码中有某种类型

奇怪的是,代码运行得非常好,而编译时却没有发生这种情况

此错误有时在应用程序的所有方法中都会随机出现。请按F9键计算族和。 不总是,但有时

相同的行为有一个vbe错误消息,描述如下:

visual basic模块包含语法错误

当我点击debug时,它会登陆到application.calculate(full)上,如果我继续执行代码(使用F5),它会继续执行,不会出现错误

编辑: 有时,当我将此函数复制到另一个工作簿时,它会受到用户定义类型错误的影响:

Option Explicit

Public Function MergeAreaValue(rng As Range) As String
On Error Resume Next

If rng.MergeCells = True Then
    MergeAreaValue = rng.MergeArea.Cells(1).Value2
Else
    MergeAreaValue = rng.Value2
End If

End Function
该函数从合并区域获取值

编辑2: 我知道用户定义的类型错误总是在计算时发生,但不会破坏它。工作簿仍然计算正常值。。这条消息真烦人。

我觉得“有时”是关键词。尝试反编译文件。举个例子

多年来,我使用它没有任何问题,但只有好处:) Excel没有Access/decompile那样的内部反编译器。 别忘了自己备份,而不仅仅是工具:)
.

违规类型是在您自己的代码中定义的,还是在库中定义的?如果是后者,您是否检查过它是否包含在工具/引用中?我应该注意,这个错误并没有指向声明。(就像我认为它应该做的那样)工作簿包含相当多的代码。但唯一(非标准)的外部引用是Microsoft脚本运行时。还有微软xmlcoots你是否碰巧有类似的变量在其他地方是公共的?@DougCoats我刚刚资助了一个与此错误相关的过程。你是否在每个模块的顶部使用了显式的
选项
,你的VBA代码是否编译成功?