我正在使用vba为Excel开发一个插件。打开电子表格后,将重新计算所有值,这会减慢打开速度。我尝试创建一个Workbook_open事件,该事件将应用程序的计算从自动更改为手动,但是在完成计算后将执行此事件处理程序。我还尝试在电子表格关闭之前将计算方式设置为手动,以便下次打开时会更快。但是,我的问题是我觉得它对客户具有侵害性。
理想情况下,我想做的是:
我该怎么做?谢谢
答案 0 :(得分:0)
我创建了2个在需要执行此操作时调用的潜艇,Updates_Off
和Updates_On
。您将需要在调用子例程中将变量CalcMode
,IterationMode
和Iterations
声明为公共变量,并且只有在退出前重新打开更新后,此变量才有效。如果无法做到这一点,则将需要一些帮助单元格来存储值。
我有if CalcMode=xlCalculationManual
语句在开发过程中警告我,我将以手动模式开始或结束,并在需要时取消注释。
Public Sub Updates_Off()
' Turn off Screen updating
Application.ScreenUpdating = False
' Check what calculation mode is in effect and set current to manual
CalcMode = Application.Calculation
' If CalcMode = xlCalculationManual Then _
' MsgBox "Starting mode is manual"
IterationMode = Application.Iteration
Iterations = Application.MaxIterations
Application.Calculation = xlCalculationManual
End Sub
Public Sub Updates_On()
' Turn on Screen updating
Application.ScreenUpdating = True
' Reset Calculation mode
Application.Calculation = CalcMode
Application.Iteration = IterationMode
Application.MaxIterations = Iterations
' If CalcMode = xlCalculationManual Then _
' MsgBox "Reset to manual mode"
End Sub