我有一个VBA宏代码。其主要目的是将数据从工作簿复制到另一个工作簿;只是行改变了。这个宏很快,直到我在目标表上进行了一些条件格式化。
我的问题是,在宏运行时是否有任何方法可以禁用Excel中的每个边操作?现在我禁用了这些:
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
但我认为我可以关闭更多以加快速度。有什么建议吗?
答案 0 :(得分:2)
您可以在标准模块上使用以下两个代码...
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
就条件格式而言,请确保不要将其应用于未使用的范围,即不在条件格式公式中引用整行或整列。换句话说,将其限制在工作表上的数据范围内。
答案 1 :(得分:0)
您可以使用每页属性临时关闭条件格式的计算;
Sub EnableFormatting(enable As Boolean)
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
WS.EnableFormatConditionsCalculation = enable
Next
End Sub