我一直在研究如何在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
答案 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"
但是,请记住,您正在打开和关闭设置 - 您应该在更改设置之前检查这些状态,以便您可以将它们重置为原始设置,而不是再将它们全部关闭 你可以用静态变量来做到这一点