2016-04-29 71 views
2

在我的Excel工作簿有时我收到以下错误:VBA用户定义类型没有定义(有时只)

vba user defined type not defined

我知道,这通常意味着有一些类型的代码中脱颖而出( VBA)不知道。

奇怪的是,该代码运行完全正常,并在编译不会发生这种情况。

此错误随机在Application.Calculate家庭的所有方法和F9按键有时occures。 并不总是,但有时。

同样的行为与此说明一个VBE错误消息:

visual basic module contains a syntax error

当我点击调试它的土地上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 

的函数从合并后的区域价值。

EDIT2: 我已经在用户自定义类型的错误总是occures的计算,但不会打破它。该工作簿仍然计算正常..该消息只是烦人的。

+0

是否在您自己的代码或库中定义了违规类型?如果是后者,是否检查过它是否包含在工具/参考中? – jsheeran

+0

以及我应该注意到,这个错误并不指向我的声明。 (就像我认为它应该这样做) 该工作簿包含了很多代码。但唯一的(不是标准的)外部引用是Microsoft脚本运行时。和微软XML – JoshK

+0

你碰巧有类似的变量是公开的吗? –

回答

0

看来我是“有时”是关键字。尝试反编译文件。例如,使用this

多年来,我使用它没有任何问题,但好处仅:) Excel中没有内部的反编译器作为接入/反编译。 不要忘了自己备份,而不只是工具:) 。