2011-03-31 47 views
3

在Excel 2003 SP2XLL和vba函数名称冲突导致永久#NAME?错误

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

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

  • VBA函数被删除,#NAME?出现并永远保持。 这不利于在另一个excel版本或安全模式下保存工作簿。

即使VBA函数已经消失,Excel仍然记得查看VBA。 任何有关如何解决这个问题的建议?

+0

如果您导出VBA模块然后重新导入它们会怎么样?我假设你已经尝试删除使用该函数的公式,然后恢复它们。并尝试做全树recalc等 – jtolle 2011-03-31 17:18:55

+0

你应该接受你自己的答案,以表明你的问题现在已经解决。 – 2011-04-08 12:19:57

回答

0

最后,我从一个旧的电子表格开始中,转移我的模块和板材它...是我能找到

的唯一途径
+1

如果您尝试过Charles的解决方案,我很好奇,因为我很想知道这是否可行。 – jtolle 2011-04-01 18:21:41

2

尝试定义一个定义的名称相同的功能,然后将其删除

+0

在Excel 2003中工作。 – AnotherParker 2014-09-03 14:27:23

1

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

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

但是,当您打开工作簿时,Excel将首先查找XLA [M]/XLL中的UDF,然后再查看同一工作簿的VBA部分中的UDF。可能这是因为VBA UDF尚未被Excel所知,但XLA [M]/XLL中已有的是,而且工作簿将与后者永久链接。

可能您不会理解哪一个被调用,除非您将工作簿移动到XLA [XL]/XLL不可用的PC。此时,最可能的结果是您单元格中的“#NAME”或“#VALUE”。

我的建议是避免在不同供应商中对UDF使用SAME名称时不明确。