XLL和vba函数名称冲突导致永久#NAME? 错误

在Excel 2003 SP2中

  • XLL定义了xll_function如果我叫它,它工作正常。

  • 定义了一个名字相同的VBA函数:它优先于XLL的xll_function。

  • VBA函数被删除,#NAME? 出现并永远停留。 在另一个excel版本或安全模式下保存工作簿是无济于事的。

即使VBAfunction已经消失,Excel仍然记得看VBA。 任何build议在做什么来解决这个问题?

尝试定义一个与函数相同的Defined Name,然后删除它

当涉及到链接VBA中包含的UDF,XLA [M]或XLL时,Excel有一个非常奇怪的行为。

通常,在编辑工作簿时,VBA UDF优先于XLA [M] / XLL中的工作簿,这是链接并保存在工作簿中的工具簿。

但是,当您打开工作簿时,Excel将首先查找XLA [M] / XLL中的UDF,接下来是同一工作簿的VBA部分中的UDF。 可能这是因为VBA UDF还不为Excel所知,但XLA [XL] / XLL中已经有了,而且工作簿将会永久地与后者连接。

除非将工作簿移动到没有XLA [XL] / XLL的PC上,否则可能不会理解哪一个被调用。 在这一点上,最可能的结果是在你的单元格中的“#NAME”或“#VALUE”。

我的build议是避免在不同供应商中使用UDF的SAME名称。

最后,我从一个旧的电子表格开始,把我的模块和工作表传送给它…是我能find的唯一方法