VBA宏运行时关闭“一切”

Dan*_*iel 0 excel vba

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

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

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Run Code Online (Sandbox Code Playgroud)

但我认为我可以关闭更多以使其更快。有什么建议?

Sub*_*eer 5

您可以在标准模块上使用以下两个代码...

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
Run Code Online (Sandbox Code Playgroud)

然后你可以在你的子程序中调用它们,如下所示......

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
Run Code Online (Sandbox Code Playgroud)

就条件格式而言,请确保不要将其应用于未使用的范围,即在条件格式公式中不引用整行或整列。换句话说,将其限制在工作表上的数据范围内。