这套《VBA之Excel应用》是非常经典的,无论是理论知识还是具体应用,内容都非常丰富,同时在讲解的过程中我会从我多年实践的角度给大家以不经意间的指导,让大家在不知觉间会更好的利用VBA这个工具。是的,代码习惯非常重要。
今日讲解的内容是“VBA之EXCEL应用”的第十四章“应用程序对象(Application Object)”的第2节“屏幕刷新(ScreenUpdating)的关闭与打开”。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非常容易的掌握相关的知识,这套教程面向初学人员,共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。
第二节 屏幕刷新(ScreenUpdating)的关闭与打开为了提高代码的运行速度,我们往往会使用一个最为方便的方法,就是关闭屏幕刷新,这种操作是什么含义呢?我们在这讲就来给大家讲解。
1 Application.ScreenUpdating属性语法:expression.ScreenUpdating
其中expression表示 Application 对象的变量
如果屏幕更新已启用,此属性的值为 True。 读/写 Boolean。
禁用屏幕更新可以加快宏代码的速度。虽然无法实时了解代码的最新动态,但它的运行速度会变快。当宏结束运行后,请记住将 ScreenUpdating 属性设置回 True。利用的语句:
Application.ScreenUpdating = False
Application.ScreenUpdating = True
2 关闭屏幕刷新的代码示例我们将利用下面的代码测试比较一下打开和关闭屏幕刷新的代码运行时间,代码如下:
Sub mynzB()
Dim T(2)
Application.ScreenUpdating = True
For i = 1 To 2
If i = 2 Then Application.ScreenUpdating = False
startTime = Time
Worksheets("Sheet2").Activate
For Each c In ActiveSheet.Columns
If c.Column Mod 2 = 0 Then
c.Hidden = True
End If
Next c
stopTime = Time
T(i) = (stopTime - startTime) * 24 * 60 * 60
Next
Application.ScreenUpdating = True
MsgBox "screen updating on: " & T(1) & _
" sec." & Chr(13) & _
"screen updating off: " & T(2) & _
" sec."
End Sub
代码截图:
代码讲解:以上代码将工作表的双数列隐藏。第一次运行是没有关闭屏幕刷新,第二次运行是关闭屏幕刷新,最后提示给用户两次运行的时间比较。
我们看最后弹出的结果:
我们看到两者的运行时间相差了11秒之多,可见打开和关闭屏幕刷新对于代码运行时间影响还是明显的。
3 打开屏幕刷新的视觉效果在上面的讲解中,我们了解到,屏幕刷新的打开和关闭对代码的运行速度有一定的影响,我们再来比较一下两者在运行过程中的不同,我们看下面的代码:
Sub mynzC() '打开屏幕刷新的视觉效果
Dim i As Integer
For i = 1 To 10000
Range("A1").Value = i
Next
End Sub
代码截图:
代码讲解:这段代码就是将1到10000的值填充到单元格A1中,代码在运行时我们会看到实时的刷新过程。在A1单元格中数字是不断变化的。
代码的运行效果: