eclipse运行程序总是运行以前的代码_VBA代码解决方案89讲:少用Activate或Select语句,提高程序运行速度...

251a9968ca46b606d673b560695a2fda.png

大家好,我们今日继续讲解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

运行截图:

8218d440924678bd2f356e9e05e3eb57.png

从上述代码运行结果看出:节约的时间是很可观的

今日内容回向:

1 本节优化代码的措施是什么?

2 你是否认同上面的优化措施呢?其实我在写代码的时候往往是采用的第一种方案。不做优化。

作者自媒体平台:微信号“NZ9668”、头条号“VBA专家”、百家号“VBA与GO语言”、微信公众号“NZ_9668”、社群“VBA学习交流群”。

这一系列文章是根据作者多年的工作经验编写的,也是一直在利用的工具,非常方便好用。现在分享出来,希望能对同样在职场打拼的朋友有些许的帮助,使你的工作更加高效、流畅。朋友们有问题请随时提出来,我们一起探讨学习。对数据分析有需要的公司、组织或个人可以直接联系,及时为你提供专业的定制技术支持。

工作不是一切。工作是每个人安身立命、成长发展的基础。但你要知道,工作是永远也做不完的,时间会抹去很多问题。多关注自己、家人和朋友,这些才是我们生活中更为重要的东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值