打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【小白教程】除了数组,如何提高VBA代码运行速度?
如何优化代码

有一次交流群一位朋友问我,为什么我的代码运行了20分钟还没运行完?!怎么优化代码?

我首先问了下数据量,也就几千行,但是一运行就是卡着不动了。最后我检查了代码之后,发现他里面写了个死循环。并不是程序运行的慢,而是程序卡主了。

他静静的等待了20多分钟,最后强退了。

一般程序超过两三分钟没响应,就要检查下代码了,极有可能是死循环。这个时候需要优化代码,或者直接使用更高级的武器--数组

也有朋友说数组太抽象,还没有学数组,那该如何优化代码速度呢?

下面我就列举几个优化代码速度的常用方法,也是几个VBA编程的好习惯。

方法❶:少用Select和Activate

刚开始学VBA,很多都是录制宏得到的语句, VBA 程序里满屏幕的对象的激活和选择。

例如:

Workbooks("案例工作簿").ActivateWorkSheets("案例").SelectRange("A1").Select

就好比明打电话一句话就能解决的事,非要过去,见了本人

事实上大多数情况下这些激活操作不是必需的。例如:

WorkSheets(″案例″).SelectRange(″A1″).SelectRange(″A1″).Value= "VBA说"

完全可以简化成一句

WorkSheets(″案例″).Range("A1").Value="VBA说"

当然,.Value这个默认属性也可以省略。

WorkSheets(″案例″).Range("A1")="VBA说"

这么一番简化之后,不仅代码更简洁,运行速度也会提高。

关键的关键

对隐藏的工作表使用select方法的时候,会报错。所以我们读取数据、写入数据尽量避免使用Select。

方法❷:尽量减少使用对象的引用

每一个 Excel 对象的属性、方法的调用都需要通过 OLE 接口的一个或多个调用,这些OLE 调用都是需要时间的,减少使用对象引用能加快 VBA 代码的运行。

说这么官方你一定听不懂。直接拿例子来说一下:

ThisWorkbook.Worksheets("案例").Range ("a1")="VBA说"

一定没有Range ("a1")="VBA说"效率高,尤其放在循环内部的时候。

那我们怎么解决这个问题,减少对象的引用次数呢?

➜使用With...EndWith结构简化

既能精简代码又能一定程度加快速度。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA语句用法综合案例1
VBA数组 | 从入门到精通(5)- 效率与
第11章 对象概述
VBA系列讲座(6):提高Excel中VBA的效率
VBA 教程 | 变量的声明和赋值
VBA编程基础:对象与集合
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服