你可以有标准的模块在以下两个代码...
Sub TurnEverythingOff()
With Application
.Calculation = xlCalculationManual
.EnableEvents = False
.DisplayAlerts = False
.ScreenUpdating = False
End With
End Sub
Sub TurnEverythingOn()
With Application
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub
然后你就可以打电话给他们在你的子程序中像下面...
Sub YourMacro()
'variable declaration section
TurnEverythingOff
On Error GoTo Skip 'if an error occurs, this makes sure that everything is turned on back
'other stuff here
Skip:
TurnEverythingOn
End Sub
至于有条件格式化,请确保您不将它应用于未使用的范围,即不在条件格式公式中引用整行或整列。换句话说,将其限制在表单上的数据范围内。
'application.Calculation = xlCalculationManual' – YowE3K
什么@ YowE3K说,只记得用'Application.Calculation = xlAutomatic' – Jeremy
条件格式增加了工作簿的大小极大,如果这将是更要重新开启您的宏一次在循环中添加一行。如果关闭计算并不能阻止Excel进行所有计算并记录与格式有关的所有数据,则可以尝试一次性粘贴大块数据,或者更好地,在完成粘贴后应用条件格式,或者仍然更好的办法是不用条件格式化,并使用VBA来应用你想要的格式。 – Variatus