【发布时间】:2014-03-06 04:17:42
【问题描述】:
我有一个插件,它定义了一些在 excel 中不可用的数学函数。我已在模板工作表中安装并正常工作(位于模板工作簿中),但是当我将包含模板工作簿中的函数的模板工作表复制到新工作簿时,插件似乎停止工作并给了我一个名字?”调用函数的单元格出错。
有人知道发生了什么吗?提前致谢
编辑: 我应该更具体。插件用于用户定义函数 (UDF),位于 xla 文件中。上面,当我提到“模板工作簿”时,这实际上是不正确的。它是一个普通的工作簿 (.xls),我们根据需要将各个工作表从中复制到一个新的工作簿中。我将其称为我的“主”工作簿,以区别于“模板”。
由于我们有许多不同的“主”工作簿,我们会定期从中提取特定的工作表,因此我正在尝试自动化选择要复制的工作表的过程(使用工作表中的复选框)。一旦勾选了所有必要的复选框,就会按下一个按钮,创建一个新的工作簿,然后从各个主工作簿中导入所有需要的工作表。 UDF 在这个新工作表中不起作用。
根据以下响应者的一些提示和广泛的网络搜索,问题出在 UDF 函数引用本身。让我解释一下:
UDF 定义为:
公共函数 Ber(ByVal x As Double) As Double 结束函数
这在“主”TPLATE.xls 工作簿中运行良好。当我从中复制一张包含具有公式的单元格的工作表时,在新工作表中说“= Ber(A1)”,公式变为:“= TPLATE.xls!Ber(A1)”。
如果我随后在 Cell 的公式中手动租用正确的 UDF,它就可以工作。我不想这样做。
我找到了曾经有希望的解决方案,但似乎无法让它发挥作用: http://www.jkp-ads.com/Articles/FixLinks2UDF00.asp (注:点击绿框箭头继续文章)
有什么方法可以确保复制的工作表中的 UDF 保留对插件的正确引用?
我尝试了以下方法:
包含代码以仅用“=Ber(A1)”查找和替换“=”符号和“Ber(A1)”之间的任何文本 -> 不起作用
来自上述链接的解决方案。 -> 无法让它工作。
再次感谢您的帮助!
【问题讨论】:
-
你有什么样的插件?某种 UDF、COM、文档级别?您收到的错误意味着 Excel 找不到您正在使用的引用之一。可能是缺少命名范围错误引用(您是否定义了任何未复制的命名范围工作簿?)或者它可能找不到您的插件(函数调用或其他内容)。
标签: vba excel excel-addins