tpa*_*ale 17 excel vba xlsx user-defined-functions xlsm
我最近获得了一个大的,稳定的XLSM文件,并将其拆分为XLAM和XLSX.XLSX调用中的数千个单元(udfs)在XLAM中起作用,每个这样的udf都以"Application.Volatile"语句开头(过度杀戮,强制重新计算).
XLSX不会通过Ctrl-Alt-Shift F9重新计算F9,也不会通过Application.CalculateFull重新计算Cell.Calculate.XLSX单元格只是"死"......但是......如果我点击F2编辑公式然后点击ENTER,我可以逐个重新唤醒它们.以这种方式重新唤醒的细胞似乎保持清醒,之后通常会重新调整.
有没有人遇到过这种奇怪的行为,是否还有其他方法可以强制Excel从头开始重建calc图,我应该尝试一下?
如果重要的话需要另外注意:我通过File Open打开了XLAM和XLSX,并且没有使用File ... Options ... Addins route安装XLAM - 因为过去我这样做了,分钟你"取消选中"并安装了XLAM,然后所有的UDF引用都被完整的路径名链接取代 - 非常难看.或者,如果有人可以概述安装XLAM插件的解决方法,但不会在任何地方创建断开的链接,我将继续使用它.
小智 8
这有效:
Sub Force_Recalc()
    Cells.Replace What:="=", Replacement:="=", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
想出来 - 不确定为什么微软有这个"功能":
在打开XLAM之前打开/创建使用XLAM功能的原始XLSX时会出现这种情况.在这种情况下,任何数量的哄骗都不会导致XLSX公式绑定并执行这些XLAM函数,除非您进入每个单元格并触摸公式栏并点击ENTER(或者,正如我发现的那样,通过全局替换这样做) - 在我的情况下,所有的函数都开始为"k",所以全局用"k"代替"k"修复了错误).如果首先打开XLAM,则不会出现此问题.
对于可以访问实例的UDFApplication可以使用:
Application.CalculateFull()
MSDN源码在这里
| 归档时间: | 
 | 
| 查看次数: | 28406 次 | 
| 最近记录: |