excel - 用户定义函数不重新计算

标签 excel vba user-defined-functions xlsx xlsm

我最近获取了一个大的、稳定的 XLSM 文件,并将其分成 XLAM 和 XLSX。 XLSX 中的数千个单元调用 (udfs) 在 XLAM 中运行,每个此类 udf 都以语句“Application.Volatile”开头(过度杀伤,强制重新计算)。

XLSX 不会通过 Ctrl-Alt-Shift F9 使用 F9 重新计算,也不会通过 Application.CalculateFull 使用 Cell.Calculate 重新计算。 XLSX 单元格简直“死了”……但是……如果我按 F2 编辑公式,然后按 Enter,我可以一一重新唤醒它们。以这种方式重新唤醒的细胞似乎保持清醒状态,并在此后正常重新计算。

有人遇到过这种奇怪的行为吗?还有什么其他方法可以强制 Excel 从头开始​​重建计算图吗?

一个额外的说明,以防万一:我通过文件打开打开了 XLAM 和 XLSX,并且没有使用文件...选项...插件路径安装 XLAM - 因为过去我这样做过,当您“取消选中”并安装 XLAM 时,所有 UDF 引用都会被完整路径名链接替换 ​​- 非常丑陋。或者,如果有人可以概述安装 XLAM 插件的解决方法,并且不会在任何地方创建损坏的链接,我也会这样做。

最佳答案

这有效:

Sub Force_Recalc()
    Cells.Replace What:="=", Replacement:="=", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub

关于excel - 用户定义函数不重新计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719650/

相关文章:

php - 导出 Excel 文件时调整列宽

json - VBA解析json并循环不同的对象

Excel VBA Application.Find() 方法

excel - 中断/中止 VBA 循环

python - Pandas 比较两个字符串列以创建第三列

vba - 在 Excel 2003 vba 中插入新行非常慢

vba - 在未打开的电子表格中使用 VBA FIND() 函数(或类比)

VBA Excel 2010 组合框和选择案例

user-defined-functions - 基本错误 : expected '='

sql - 如何在查询中使用 (func()).* 语法避免多个函数求值?