Excel自动计算设置

时间:2011-07-18 05:05:41

标签: excel vba excel-vba excel-2007 user-defined-functions

我在“Microsoft Office Excel 2007”中有一个复杂的项目,它使用了大量的UDF。通过 Workbook_Open 事件中的VBA,我将Excel自动计算设置为OFF以及策略性地放置计算方法,以便在需要时手动计算单元格,以便UDF不会无意中进行重新计算。

如果工作簿是在Excel实例中打开的 ONLY (或第一个打开),那么一切都很完美。只有当它打开 AFTER 另一个工作簿(在同一实例中)时,我的项目才会从 FIRST 工作簿继承自动计算设置,并对我的UDF执行无限计算。在UDF完成计算之前,不会执行放置在Workbook_Open事件中的禁用代码(可能需要永久)。只有当我的项目首先打开的项目时才会发生这种情况。

通过http://www.decisionmodels.com/calcsecretse.htm,我发现执行计算过程之前执行Workbook_Open事件是Excel的本质。

所以问题我显然与正在打开的项目有关 AFTER 打开另一个工作簿并打开自动计算:

  1. 如何强制我的项目禁用自动计算 没有它首先进行重新计算(记住,只有问题 当项目不是第一个要打开的项目时发生 按照以前打开的工作簿中的设置进行操作) OR ...
  2. 如何让项目在另一个实例(双击时)打开以避免 从上一个工作簿继承自动计算设置。
  3. 无论哪种方式,我正在寻找的答案是项目打开而不先执行计算。

    由于

2 个答案:

答案 0 :(得分:1)

一种方法是使用不同的工作簿(Opener.xls)来启动打开UDF工作簿(udf.xls)

在Opener.xls中的Workbook_Open代码
- 将计算设置为手动
- 打开udf.xls

答案 1 :(得分:0)

在你的问题中,我不认识你用来改变和继承你的工作簿选项的方式,但我作为解决方案回答:

使用VBA并运行VBA宏,只要您需要计算,就可以为您的活动工作表更改该选项;通过这样使用它:

With ActiveSheet
  .EnableCalculation = False
  .EnableCalculation = True
  .Calculate
End With

您可能需要其他方式,可以阅读this part of MSDN article