在VBA宏运行时关闭“一切”

时间:2017-05-05 09:49:16

标签: excel vba excel-vba

我有一个VBA宏代码。其主要目的是将数据从工作簿复制到另一个工作簿;只是行改变了。这个宏很快,直到我在目标表上进行了一些条件格式化。

我的问题是,在宏运行时是否有任何方法可以禁用Excel中的每个边操作?现在我禁用了这些:

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False

但我认为我可以关闭更多以加快速度。有什么建议吗?

2 个答案:

答案 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