在另一个工作簿上执行刷新时用户定义的函数出错
Posted
技术标签:
【中文标题】在另一个工作簿上执行刷新时用户定义的函数出错【英文标题】:User defined function erroring out when refresh is performed on another workbook 【发布时间】:2014-07-24 17:16:59 【问题描述】:我在一个工作簿 (WB 1) 中有一个完美运行的用户定义函数 (Volatile)。但是,当我切换到另一个工作簿 (WB 2) 并进行刷新 (F9) 并切换回 WB 1 时,UDF 错误 (#VALUE) 会出现。但是,当我再次在 WB 1 上刷新 (F9) 时,该功能开始工作。
这是一个问题,因为我在 WB 2 中引用了来自 WB 1 的值。
【问题讨论】:
是否可以发布 UDF 以及 volatile 是什么意思? “我有一个完美运行的用户定义函数” - 好像你没有,但除非你发布它,否则无法判断问题是什么...... 【参考方案1】:UDF 代码很可能在某处引用了 ActiveWorkbook
,因此当您切换到“WB 2”时,那个 是您的活动工作簿而不是“WB 1”,在这种情况下,例如,引用特定单元格可能无法按预期工作。正如你所说,当你回到“WB 1”并重新计算时,事情又开始工作了,这进一步证明了这一点。
请注意,单击 F9 将重新计算 所有 打开的工作簿在 Excel 的 同一会话,而不仅仅是活动工作簿。如果您只想重新计算(或刷新,如您所说)活动工作表,您可以改为使用 Shift+F9。
【讨论】:
以上是关于在另一个工作簿上执行刷新时用户定义的函数出错的主要内容,如果未能解决你的问题,请参考以下文章
更改另一个工作簿上的值时,Application.Volatile 不会重新计算函数
在 Excel 中,如何调用存储在另一个工作簿中的用户定义函数而无需打开另一个工作簿?
在隐藏的工作表或工作簿上可以执行哪些 Excel VBA 操作?