我有一个问题,公式没有更新(我故意手动计算)。特别是,它们是具有一些复杂依赖性的公式。
Cell1: "=Cell2"
Cell2: "IFERROR(FindData(X1, X2))"
FindData
是我编写的VBA函数,它在预定义范围(RangeXYZ)上使用Index(Match(X1),Match(X2))
。
该范围有许多连接到外部数据服务的公式(不是excel数据连接,只是另一个自定义vba公式)。
当我计算Cell1时,Excel不会计算任何下游内容。我需要一种方法来强制计算RangeXYZ,然后重新计算Cell2,然后重新计算Cell1。
谢谢
编辑:我已经在表单中包含Cell1:
Private Sub Worksheet_Calculate()
Application.calculatefull
End Sub
但我发现这在无休止的计算循环中结束。我也尝试过指定表单(" Sheet1")。计算,但这似乎不起作用。
一个工作的Ctrl-Alt-F9有点矫枉过正,需要花费太多时间。
答案 0 :(得分:0)
我强烈建议将RangeXYX作为第三个参数传递。 Excel计算引擎探测测试依赖项的工作簿,您需要帮助它,而不是通过虚假优化来欺骗它。
如果您真的希望将Excel计算引擎加入到您的出价中,那么您可以在事件处理程序中尝试此操作
Option Explicit
Private Sub Worksheet_Calculate()
Me.Range("RangeXYZ").Calculate
End Sub