如何在Excel电子表格中启用和禁用昂贵的计算?

我使用巨大的Excel工作表,他们永远加载,因为使用macros和其他公式(即使我有一个很好的电脑超过5分钟)的单元格计算。 我想知道是否有一种方法来保存Excel文件的当前单元格值,而不是每次打开文件计算单元格。

我正在寻找的就像一个开关,可以打开和closures计算,所以当我需要使用它们时,我可以将它们设置为打开,当我完成时,我可以将其closures,单元格将保持其当前值。

也许我可以创build一个能做这样的事情的macros,或者我只是在做梦,没有别的办法,所以我应该坐下来等。

我们有一个类似的问题。

这是我们使用的:

Function TurnOfCalcs() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False Application.DisplayAlerts = False End Function 

当初始数据加载和更新时,我们closures计算,屏幕更新,警报和事件。

一旦来自工作表的stream式传输数据完成,我们就像这样重新打开更新:

 Function TurnOnCalcs() Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.DisplayAlerts = True End Function 

你仍然有这个时间,但这意味着你不会在每个单元格更改之后进行更新,这会显着加快你的文件加载时间。

您可以通过GUI和VBA为Excel设置计算选项: Application.Calculation = xlManual

这里是一些更多的信息.​​.. http://www.decisionmodels.com/calcsecretse.htm

使用:

 Private Sub Workbook_Open() Module1.TurnOff End Sub 

然后有一个button比分配这个macros

 Sub Button1_Click() If Application.EnableEvents = True Then TurnOff Else TurnOn End If End Sub 

然后在模块中有这个:

 Public Sub TurnOn() Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic End Sub Public Sub TurnOff() Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic End Sub