mfc程序运行时间越长越占用cpu_Excel VBA 编程开发应用系列 (十二)— 提高Excel VBA程序运行速度的实用技巧...

d6ea18f75bb4517381e00006607720d9.png

本部分主要介绍Excel VBA编程过程中的一些可以提高代码运行速度的使用技巧,我们知道,用VBA实现同一个功能可能有多种不同的方法,但我们程序员心中都有一个写出一个最有效率的代码的追求,下面我们将讲解一些提高代码运行速度的实用技巧,它们可以大大的提高VBA代码的运行效率,节省程序运行的时间,从而提高我们的工作效率。

技巧一:将变量声明成合适的数据类型,并且尽量不声明Variant型变量

通过Excel VBA 编程开发应用系列 (二)我们知道不同的数据类型占用的内存大小是不一样的,而变量占用内存越小,程序会运行越快,所以能声明为布尔型(BOOLEAN),就不要声明为整型(Integer),能声明为整形(Integer)的,就不要声明为浮点型(Single/Double)。并且尽量不声明Variant型变量,Variant类型占用的存储空间远远大于其他数据类型,因此除非必要,尽量不声明Variant型变量。

技巧二:如非必要,尽量不要声明全局变量,要及时释放不再使用的变量(对象)

不要让变量或对象占据不必要的内存,我们知道全局变量声明后会一直占用内存,因此如非必要,尽量不要声明全局变量,而其他的变量(尤其是对象变量),使用完成后要即使释放掉,避免一直占用内存,从而可以提高代码的运行效率。

技巧三:关闭屏幕刷新

在代码运行之前,首先设置禁止屏幕刷新,

Application.ScreenUpdating = FALSE '禁止屏幕刷新

在代码运行完成之后,重新设置允许屏幕刷新

Application.ScreenUpdating = TRUE '重新设置允许屏幕刷新

通过禁止屏幕刷新可以大大的提高代码的运行效率。

技巧四:尽量使用VBA自带的函数来完成计算

我们知道Excel VBA自带了很多现成的函数,尽管我们也可以通过自己编程来实现相同的功能,但 Excel VBA函数(工作表函数和VBA内置函数)的运行效率更快,所以我们要尽量使用VBA自带的函数来完成计算。

技巧五:避免反复的引用相同的对象,可以使用with语句来简化运用对象

我们知道,无论是引用对象,还是调用对象的方法和属性,都会用到点(.)运算符,每次运行程序,计算机都会对这些点(.)运算符进行解析,当点(.)运算符过多时,则会增加程序的运行时间。如:

ee15abf012d7b3991c671e09be1b04c3.png

可以简化为:

7cf9a19ee386f92f97c5ac684faeb552.png

技巧六:要优化循环条件和语句块,尽量避免在循环语句中调用函数

在优化函数体之前,要确定循环函数的执行条件,避免无效的条件和死循环,如果必须要使用死循环,一定要设置循环的出口,从而避免陷入死循环而导致死机,在循环语句块中尽量避免函数的调用,如果函数体较短,可以直接将函数语句写入到循环语句块中。

技巧七:合理利用数组和算法

举个例子,如把1到65536写入到Excel表中的A1到A65536中去,可以用如下两种方法来实现:

方法一:

7516dbd2bc5be6b46de8c636a844cf84.png

其运行时间如下:

94f4a105778a1cde8e02f4239b85630d.png

方法二:

ee4930490a1d4d36f0e01d68504d503a.png

程序运行时间为:

f3baf811e1faa09fdc8ca4caf99284c3.png

由结果可见,方法二要比方法一快的多,这是因为先把数据写入到数组中去,然后再批量写入到单元格中。因此合理利用数组和算法也可以大大的提高程序的运行效率。

技巧八:在引用一个集合目标体(如Worksheets)时,用索引号比用其名称速度会快

如果你明确知道一个"工资表"工作表的索引号是1的话,
Worksheets(1)比用Worksheets("工资表")速度要快很多,但是索引号的运用会有风险因为表的顺序可能会因增删工作表而经常改变,所以用索引时也要特别注意。

技巧九:尽量不用Selection

基本上EXCEL VBA中很少有必须使用Selection的,因此要去掉多余的Selection,如:
Range("A1").Font.Bold = True
而不是:
Range("A1").Select
Selection.Font.Bold = True

技巧十:当工作簿中有大量的公式运算时,要将计算模式改为手动模式

在程序开始之前:设置计算模式为手动模式:

Application.Calculation = xlCalculationManual '计算模式为手动

而在程序运算结束时,要记得改回来

Application.Calculation = xlCalculationAutomatic '计算模式为自动模式

技巧十一:使用条件判断语句时,将最可能的条件及容易计算的条件放在前面

因为程序运行的顺序是自上而下的,将最可能的条件及容易计算的条件放在前面,当条件满足时,会直接跳过后面的语句,这样也会提高程序的运行速度。

更多精彩内容,请扫描关注 吉祥编程 公众号

dc548460ea4203a434756664f000687b.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值