![251a9968ca46b606d673b560695a2fda.png](https://i-blog.csdnimg.cn/blog_migrate/422236de9be69d6bb25110f4941f9b93.jpeg)
大家好,我们今日继续讲解VBA代码解决方案的第89讲内容:VBA代码的优化篇,少用激活Activate语句或Select选择语句,可以提高程序的运行速度。
在VBA代码的编写过程中我们经常会使用大量的Select和Activate语句,这些语句的使用往往会增加代码运行过程中的可视效果,但往往会牺牲代码的运行速度。所以可以通过减少这些语句的使用以加快运行速度,
首先我们先研究一下这两个方法,Select和Activate都是作用于对象,但是也有所分别,对于工作表对象,select方法是后台操作,可以选择多个工作表,而activate则无法选择多个工作表激活,所以会报错。select方法无法选择隐藏的工作表,例如我将sheet1工作表隐藏后选择它。 ActiveWorkbook.Sheets("sheet1").Select。而使用activate方法则可以激活隐藏的工作表,不会报错。针对工作表而言,两个方法也有不同的地方。首先select选择范围后,会默认激活区域中最左上角的单元格。使用select选择了区域范围会有对应的范围提示框,其左上角单元格高亮无阴影显示。也就是说select无法指定激活的单元格,而activate则可以,不过需要搭配着select使用,必须先使用select指定范围,然后使用activate指定单元格。分析了上述的选择不同后,我们接着看下面的代码:
Sub MySta()
Dim i As Integer
Dim t As Date
Dim t1 As String
Dim t2 As String
t = Timer
For i = 1 To 3000
Sheets("Sheet10").Select
Sheets("Sheet10").Cells(i, 1).Select
ActiveCell.FormulaR1C1 = "10"
Next
t1 = Timer - t
t = Timer
For i = 1 To 3000
Sheets("Sheet10").Cells(i, 5) = "10"
Next
t2 = Timer - t
Sheets("Sheet10").Cells(3, 2).Select
Sheets("Sheet10").Cells(3, 2) = Format(t1, "0.00000")
Sheets("Sheet10").Cells(4, 2) = Format(t2, "0.00000")
MsgBox "第一次运行时间:" & Format(t1, "0.00000") & "秒" _
& Chr(13) & "第二次运行时间:" & Format(t2, "0.00000") & "秒"
End Sub
代码解析:
Sta过程分别使用录制宏所得的代码和修改后的代码给单元格填充,最后使用消息显示运行时间。
第8行代码到第10行代码有两次使用Select方法,第15行代码是修改后的代码,在代码量不大的情况下运行速度区别不大,但是在循环5000次后运行速度就会差别很大。
运行Sta过程,消息框显示两种方法的运行时间,可以看出后一种方法的运行时间要远远小于前者代码的运行时间.
代码窗口:
![c530d8fd957058f453db73cbff37a1eb.png](https://i-blog.csdnimg.cn/blog_migrate/2ba23266709705e447eb519b1dcac0fc.jpeg)
运行截图:
![8218d440924678bd2f356e9e05e3eb57.png](https://i-blog.csdnimg.cn/blog_migrate/5a32fa08d9c30149e3f7c338152aed4a.jpeg)
从上述代码运行结果看出:节约的时间是很可观的
今日内容回向:
1 本节优化代码的措施是什么?
2 你是否认同上面的优化措施呢?其实我在写代码的时候往往是采用的第一种方案。不做优化。
作者自媒体平台:微信号“NZ9668”、头条号“VBA专家”、百家号“VBA与GO语言”、微信公众号“NZ_9668”、社群“VBA学习交流群”。
这一系列文章是根据作者多年的工作经验编写的,也是一直在利用的工具,非常方便好用。现在分享出来,希望能对同样在职场打拼的朋友有些许的帮助,使你的工作更加高效、流畅。朋友们有问题请随时提出来,我们一起探讨学习。对数据分析有需要的公司、组织或个人可以直接联系,及时为你提供专业的定制技术支持。
工作不是一切。工作是每个人安身立命、成长发展的基础。但你要知道,工作是永远也做不完的,时间会抹去很多问题。多关注自己、家人和朋友,这些才是我们生活中更为重要的东西。