我有一个包含大量内置循环引用的大型电子表格。我已经内置VBA代码设置为打开时的手动和迭代计算,并且还设置代码以在我设置为迭代计算后强制在工作簿上打开计算。但是,似乎工作簿在打开之前甚至在运行此VBA代码之前尝试计算,这样如果工作簿已经设置为自动计算而没有迭代计算,则它会运行工作簿,然后由于循环引用而崩溃。
我知道我可以将自己的应用程序设置设置为始终进行迭代计算,但此工作簿与其他可能没有相同应用程序设置的人共享。有没有办法停止打开计算,直到代码将应用程序设置为迭代计算。
感谢。
答案 0 :(得分:0)
在空白的.xlsm文件中,在工作簿打开事件中,输入此代码
Private Sub Workbook_Open()
Application.calculation = xlCalculationManual
' Add code to open the real workbook
' ---------
End Sub
由于计算将由最后打开的工作簿是手动还是自动驱动,因此必须将上述代码放入Caller工作簿(如上所示)。此调用者工作簿在打开时将首先禁用计算,然后提取您的工作簿,这将保证具有手动计算模式。
此外,在所需的工作簿(具有循环引用的工作簿)中,OnOpen事件应触发调用者工作簿的关闭而不保存。
这样,该过程对用户是透明的,并且他/她只打开来电者书。