Performance Excel vba Application.Screen更新vs Application.visible
我有一个vba代码,可以将某些单元格从另一个excel工作表复制到活动excel工作表。我希望这项工作能更快地完成Performance Excel vba Application.Screen更新vs Application.visible,performance,excel,vba,Performance,Excel,Vba,我有一个vba代码,可以将某些单元格从另一个excel工作表复制到活动excel工作表。我希望这项工作能更快地完成 将Application.screenUpdate设置为false比将Application.screenUpdate/Application.visible更改为hidden或同时执行这两项操作更能加快任务的速度吗?我无法直接回答您的问题;但是我认为将Application.visible设置为false不会提高性能;我更喜欢使用以下代码: Public Sub YK_Start
将
Application.screenUpdate
设置为false比将Application.screenUpdate/Application.visible
更改为hidden或同时执行这两项操作更能加快任务的速度吗?我无法直接回答您的问题;但是我认为将Application.visible
设置为false
不会提高性能;我更喜欢使用以下代码:
Public Sub YK_Start()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
End Sub
Public Sub YK_End()
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
用法示例:
Sub LoopExample()
Dim Cell As Range
Call YK_Start
Columns("B:F").ClearContents
For Each Cell In Range("A1:A100000")
Cell.Offset(, 1) = Cell.Value + 1
Cell.Offset(, 2) = Cell.Value + 2
Cell.Offset(, 3) = Cell.Value + 3
Cell.Offset(, 4) = Cell.Value + 4
Cell.Offset(, 5) = Cell.Value + 5
Next Cell
Call YK_End
End Sub
此源代码将在18秒内执行
,无需使用Call YK_Start
和Call YK_End
;并将使用这些过程在10秒内执行
参考:阿拉伯语办公论坛。
编辑#1
有很多方法可以测量代码的执行时间;我不知道最准确的是什么;我只需要近似值;请参阅:
我使用的是最简单的一个:
Sub my_test()
Dim t As Single
t = Timer
'code
Call LoopExample
MsgBox Timer - t
End Sub
我应该将Application.screenUpdate/Application.visible中的哪一个(/两者)设置为false
请为您的答案提供理由。
这真的取决于你想做什么。让我解释一下
目的
Application.visible
在您不希望用户看到应用程序时使用。应用程序是否正在更新并不重要。例如,您可能会显示一个登录用户表单
,在用户输入正确信息之前,您不想显示应用程序
另一方面,屏幕更新与应用程序本身的可见性无关。它可以(简单地说)防止应用程序更新时出现的闪烁
我应该使用哪一个?
当屏幕更新
为假
且应用程序可见
为真
时,不会发生闪烁
当屏幕更新
为真
且应用程序可见
为假
时,会发生闪烁,但由于应用程序被隐藏,您无法看到它
当屏幕更新
为真
且应用程序可见
为真
时,会发生闪烁,您可以看到它
当屏幕更新
为假
且应用程序可见
为假
时,不会发生闪烁
因此,如果您担心性能(代码的执行速度),则建议始终将屏幕更新
切换到False“当屏幕更新为True,而Application.visible为False时,会发生闪烁,但由于应用程序处于隐藏状态,您无法看到它。”---我觉得由于应用程序根本不可见,CPU根本不会为更新分配资源,所以我们甚至可能根本不需要屏幕更新。这有什么意义吗?为什么不做houssam提到的测试,亲自看看呢?:)对我试试看。ThanksHow您测量了运行时间吗?excel应用程序中是否有我可以找到代码运行时的地方?@AdityaGuru:我修改了答案;请参见编辑#1