Excel - 打开时停止计算以防止循环引用

时间:2014-07-02 15:36:47

标签: excel vba excel-vba

我有一个包含大量内置循环引用的大型电子表格。我已经内置VBA代码设置为打开时的手动和迭代计算,并且还设置代码以在我设置为迭代计算后强制在工作簿上打开计算。但是,似乎工作簿在打开之前甚至在运行此VBA代码之前尝试计算,这样如果工作簿已经设置为自动计算而没有迭代计算,则它会运行工作簿,然后由于循环引用而崩溃。

我知道我可以将自己的应用程序设置设置为始终进行迭代计算,但此工作簿与其他可能没有相同应用程序设置的人共享。有没有办法停止打开计算,直到代码将应用程序设置为迭代计算。

感谢。

1 个答案:

答案 0 :(得分:0)

在空白的.xlsm文件中,在工作簿打开事件中,输入此代码

   Private Sub Workbook_Open()
       Application.calculation = xlCalculationManual
       ' Add code to open the real workbook
       ' ---------
   End Sub

由于计算将由最后打开的工作簿是手动还是自动驱动,因此必须将上述代码放入Caller工作簿(如上所示)。此调用者工作簿在打开时将首先禁用计算,然后提取您的工作簿,这将保证具有手动计算模式。

此外,在所需的工作簿(具有循环引用的工作簿)中,OnOpen事件应触发调用者工作簿的关闭而不保存。

这样,该过程对用户是透明的,并且他/她只打开来电者书。