vba - 在运行任何程序之前和之后自动执行代码

标签 vba excel

在启动任何繁重的脚本之前,我需要使用 Excel 进行一些性能调整:

'Save parameters
screenUpdateState = Application.ScreenUpdating
statusBarState = Application.DisplayStatusBar
calcState = Application.Calculation
eventsState = Application.EnableEvents

'Turn them off
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

所以我在运行几乎每个程序之前粘贴了这段代码(或调用特殊程序,包含这段代码,没有区别)。有没有办法自动执行此操作(某种全局构造函数)?

完成该过程后,代码的情况与此相同:
'Put everything back
Application.ScreenUpdating = screenUpdateState
Application.DisplayStatusBar = statusBarState
Application.Calculation = calcState
Application.EnableEvents = eventsState

最佳答案

循环遍历范围并选择各种事物的代码经常落后于这种优化的需求,几乎可以 总是 避免。如果您需要帮助优化繁重的脚本,请使用资源密集型代码提出另一个问题。

在没有看到您的“繁重脚本”之一的示例的情况下,最好的办法是将您的设置和恢复代码放在 subs 中,并在您运行程序之前和之后调用它们。

Sub HeavyLifting()
    Call GetReadyToProcess

    ' code for sub...

    Call ReturnSettingsToWhatTheyWere
End Sub

Sub GetReadyToProcess()
    'Save parameters
    screenUpdateState = Application.ScreenUpdating
    statusBarState = Application.DisplayStatusBar
    calcState = Application.Calculation
    eventsState = Application.EnableEvents

    'Turn them off
    Application.ScreenUpdating = False
    Application.DisplayStatusBar = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
End Sub

Sub ReturnSettingsToWhatTheyWere()
    'Put everything back
    Application.ScreenUpdating = screenUpdateState
    Application.DisplayStatusBar = statusBarState
    Application.Calculation = calcState
    Application.EnableEvents = eventsState
End Sub

关于vba - 在运行任何程序之前和之后自动执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26677737/

相关文章:

arrays - VBA 中的最长公共(public)子序列给出#VALUE!错误

vba - excel vba char(10) 具有特殊字符串值

excel - VBA 中 "Windows"键的 Application.Sendkeys 是什么?

excel - Excel事件VBA相交中的范围替代

ms-access - 在子表单上使用过滤器

excel - 创建一个更新为新值的单元格

vba - 将唯一 ID 添加到数字列表 - VBA

excel - 通过 IP 地址到工作簿上的工作表的路径?

java - 在 Java Apache POI 中更新现有的 Excel 文件

vba - http响应文本获取不完整的html