首页 > 解决方案 > #姓名!以前工作的 UDF 函数出错

问题描述

我有一个 Excel 工作簿宏模板 (.xltm),在表格中使用了许多 VBA UDF;没有什么大的或复杂的。这些函数被声明为 Public,并保存在同一工作簿的模块中。该模板已使用多年,创建了功能始终完美运行的工作簿 (.xlsm)。现在,打开模板进行一些升级,我发现#NAME 很丑!包含我的一个 UDF 的每个单元格中的错误;如果我尝试在单元格中插入一个函数,我发现我的函数不再与 Excel 一起列出。我的 Excel 中唯一改变的是版本,现在是 2019 64 位;该模板是使用 2016 版本创建的(32 位,但也适用于 64 位),我再说一遍,所有的东西总是完美的。也许 Excel 大师可以给我一个提示来解决这个奇怪的问题?

根据要求编辑示例:

正如我所说,我的函数非常简单,不调用任何 API 代码:例如,我有这两个:

Const MinValue = 0.00001
Const NullValue = -999

Public Function IsZero(r As Range) As Boolean
   'check the cell value, and returns True if the value is <= MinValue
   If IsEmpty(r.Cells(1, 1)) Then
      IsZero = True
   ElseIf IsNumeric(r.Cells(1, 1)) Then
      IsZero = (r.Cells(1, 1) <= Zero)
   End If
End Function

Public Function Zero() As Double
   ' Simply returns the MinValue value.
   Zero = MinValue
End Function

标签: excelvba

解决方案


Excel 有时会在“记住”其计算的依赖链时遇到问题。这种情况的一个症状是,当已知功能文件在您知道应该具有值的单元格中出现奇怪的错误时。

检查是否是这种情况的一种快速方法是完全重建依赖链。在键盘上,这是 CTRL+ALT+SHIFT+F9。如果您发现这种情况经常发生,您可以在您的Workbook_Open活动中加入以下行:

Application.CalculationFullRebuild 

进一步的建议阅读是:


推荐阅读