Excel VBA性能编码设置

时间:2015-12-04 19:33:35

标签: excel vba excel-vba

我一直在研究如何在Excel VBA中加速我的代码,并且我遇到了以下有用的设置。我的问题是:是否可以将以下代码行设置为一个变量,我可以将其设置为On或Off以激活整个列表?即

之类的东西
speedUpCode = On

会设置以下所有设置,如果设置为Off,则会将以下所有内容反转为True / xlCalculationAutomatic

With Application
    .ScreenUpdating = False
    .DisplayStatusBar = False
    .Calculation = xlCalculationManual
    .EnableEvents = False
End With
ActiveSheet.DisplayPageBreaks = False 'note this is a sheet-level setting

2 个答案:

答案 0 :(得分:7)

我用这个(非常基本的):

Sub GoFast(Optional bYesNo As Boolean = True)
  With Application
      .ScreenUpdating = Not bYesNo
      .Calculation = IIf(bYesNo, xlCalculationManual, xlCalculationAutomatic)
  End With
End Sub

使用True或无参数调用以加快速度,然后使用False重置。

以上评论关于可能捕获各种设置的当前状态,以便您可以回到“原始”状态,并且并非所有设置始终都适合更新,具体取决于您正在做的事情都是值得的考虑

答案 1 :(得分:3)

您可以使用函数来执行此操作...

Function speedUpCode(sStatus As String)

    If sStatus = "On" Then
      With Application
         .ScreenUpdating = False
         .DisplayStatusBar = False
         .Calculation = xlCalculationManual
         .EnableEvents = False
      End With

    ActiveSheet.DisplayPageBreaks = False 'note this is a sheet-level setting

Else if sStatus = "Off" then

    With Application
        .ScreenUpdating = True
        .DisplayStatusBar = True
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
    End With

    ActiveSheet.DisplayPageBreaks = True 'note this is a sheet-level setting

 End Function

然后您可以使用这些来打开和关闭

  speedUpCode "On"
  speedUpCode "Off"

但是,请记住,您正在打开和关闭设置 - 您应该在更改设置之前检查这些状态,以便您可以将它们重置为原始设置,而不是再将它们全部关闭 你可以用静态变量来做到这一点