【发布时间】:2016-08-24 17:33:14
【问题描述】:
在我的 Excel 工作簿中有时我收到以下错误:
vba 用户定义类型未定义
我知道这通常意味着代码中有某些类型 excel(VBA) 不知道。
奇怪的是代码运行得非常好,而且编译时不会发生这种情况。
此错误有时会在 Application.Calculate 系列的所有方法和 F9 按键上随机发生。 不总是但有时。
同样的行为有一个带有此描述的 vbe 错误消息:
visual basic 模块包含语法错误
当我单击调试时,它会出现在 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: 我的用户定义类型错误总是在计算时发生,但不会破坏它。工作簿仍然计算正常..消息很烦人。
【问题讨论】:
-
违规类型是在你自己的代码中定义的,还是在库中定义的?如果是后者,您是否检查过它是否包含在工具/参考中?
-
好吧,我应该注意这个错误并不指向我的声明。 (就像我认为应该做的那样) Workbook 包含相当多的代码。但唯一(非标准)外部引用是 Microsoft Scripting Runtime。和微软 XML
-
你是否碰巧有类似的变量在其他地方是公开的?
-
@DougCoats 我刚刚资助了一个与此错误相关的程序。将在几秒钟内更新主要问题
-
你是否在每个模块的顶部使用
Option Explicit,你的VBA代码编译成功了吗?