gpt4 book ai didi

excel - 设置这些属性对 Excel 宏的速度有多大影响 : Application. ScreenUpdating、Application.DisplayAlerts

转载 作者:行者123 更新时间:2023-12-02 02:45:59 24 4
gpt4 key购买 nike

这样做的意义是什么:

Application.ScreenUpdating = False
Application.DisplayAlerts = False

它真的能节省那么多时间吗?

最佳答案

这取决于您作为代码的一部分在屏幕上实际更新的数量(即更新的单元格数量),以及有多少工作表,有多少工作表/单元格引用了您的代码正在更新的工作表以及如何更新整个工作簿中存在许多公式。

每次更改工作表中的某些内容时,Excel 都会重新计算所有公式。因此,如果您的代码没有更新太多工作表/单元格,但您的工作簿有很多公式,那么关闭屏幕更新可能根本没有帮助您。

性能方面还要考虑的另一件事是 Calculation 属性,将其设置为 xlCalculationManual 以关闭自动重新校准,并在最后将其返回到 xlCalculationAutomatic。

Application.Calculation = xlCalculationManual

还要考虑的一件事是事件,如果其中一个或多个工作表具有 Worksheet_Chnage 或 Worksheet_Calculate 事件处理程序,您的代码所做的每个更改都会触发它们,并且您的代码需要等待它们返回。因此,在编写代码时将其关闭。

Application.EnableEvents = False

在我的大部分代码中,我通常使用这个

On Error GoTo lblError
Dim bEvents As Boolean, iCalc As Integer, bScrnUpd As Boolean
bEvents = Application.EnableEvents
iCalc = Application.Calculation
bScrnUpd = Application.ScreenUpdating
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

'-----------------------My code

Application.EnableEvents = bEvents
Application.Calculation = iCalc
Application.ScreenUpdating = bScrnUpd
Exit Sub

'reset them even if you are exiting due to error
lblError:
Application.EnableEvents = bEvents
Application.Calculation = iCalc
Application.ScreenUpdating = bScrnUpd
Debug.print Err.Description

关于excel - 设置这些属性对 Excel 宏的速度有多大影响 : Application. ScreenUpdating、Application.DisplayAlerts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2922939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com