用户定义函数不重新计算
|
我最近拍摄了一个稳定的大型XLSM文件,并将其拆分为XLAM和XLSX。 XLSX调用(udfs)中的成千上万个单元在XLAM中起作用,每个这样的udf都以语句“ Application.Volatile”(过度杀伤,强制重新计算)开头。
XLSX不会通过F9通过Ctrl-Alt-Shift F9来进行重新计算,也不会通过Cell.Calc通过Application.CalculateFull进行重新计算。 XLSX单元格只是\“死\” ...但是...如果我按F2键编辑公式然后按ENTER键,我可以将它们一一唤醒。以这种方式重新唤醒的细胞似乎保持清醒状态,此后正常重新计算。
有没有人遇到过这种奇怪的行为,是否还有其他方法可以迫使Excel从头开始重新构建计算图,我应该尝试一下?
万一重要,请另外注意:我通过File Open打开了XLAM和XLSX,但没有使用File ... Options ... Addins路由安装XLAM-因为在过去,我需要一分钟您“取消选中”并安装了XLAM,则所有UDF引用都将替换为完整的路径名链接-非常难看。另外,如果有人可以概述安装XLAM加载项的解决方法,但不会在所有地方都创建断开的链接。
没有找到相关结果
已邀请:
11 个回复
朗排谎纷瘟
疼嘶桐
薄扩络拜
来强制重新计算。您也可以将其放入宏并将其映射到组合键。 编辑添加 请参阅宏Greg Glynn的回答。
宦哨抹存胳
MSDN来源在这里
藕挝
芯伶句餐绕
版萍层分
纤洞需匪
辽躺
我在公式示例中提到了
这很好用,并且应该与任何其他功能一起使用
徘廷
\”。 直到我将原始UDF中的内容增量添加到Ali \的简单monitorRange函数中之前,这一直使我丧命。然后,我发现我的UDF有一个数据透视表刷新语句,该语句在删除后消除了\“
\”错误。以下是UDF的特定违规行,但我的一般规则是UDF在其调用链中不能包含任何代码来更新其他工作簿内容。也就是说,UDF必须仅获取值,而不能设置值。 我使用以下两种情况验证了这一点,这两种情况都会导致此错误: 刷新数据透视表,例如:
更改另一个单元格的值,例如:
奇怪的是,我测试并发现,UDF可以包含一个MsgBox调用来毫无问题地显示对话框,这是绝对可以的(实际上有点酷)。这将允许UDF监视范围,然后弹出msgbox对话框以显示要包含在UDF中的任何条件。在其他情况下,我会牢记这一点。 希望这可以帮助其他人解决这个令人讨厌的垃圾问题。
抵舵