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

时间:2013-06-12 15:55:20

标签: excel excel-vba vba

我使用巨大的excel工作表,因为使用宏和其他公式进行单元格计算,所以它们需要永远加载(即使我有一台好的计算机,也要超过5分钟)。我想知道是否有办法用当前单元格值保存excel文件,而不是每次打开文件时计算单元格。

我正在寻找的是一个可以打开和关闭计算的开关,这样当我需要使用它们时我可以将它们设置为打开,当我完成后,我可以将它切换为关闭和细胞会保留他们当前的价值。

也许我可以创建一个可以做类似事情的宏,或者我只是在做梦,没有别的办法,所以我应该坐等等。

3 个答案:

答案 0 :(得分:2)

我们遇到了类似的问题。

这就是我们使用的:

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

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

一旦表单中的流数据完成,我们就会重新打开更新:

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

您仍然拥有udpate时间,但这意味着您不会在每次单个单元格更改后执行更新,这会大大加快文件加载时间。

答案 1 :(得分:0)

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

以下是更多信息...... http://www.decisionmodels.com/calcsecretse.htm

答案 2 :(得分:0)

使用:

Private Sub Workbook_Open()
Module1.TurnOff
End Sub

然后有一个按钮,而不是分配给这个宏

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