由于VBA运行在Excel中,受VB语言和Excel的限制,遇到稍大的计算量,Excel可能出现假死现象,运行时间也比较长,所以在编写好代码后,可以对代码进行一定的优化,提高VBA的运行效率。
网上有很多关于提高VBA代码运行效率的方法,我从中总结了以下14条,我自己使用过程中感觉效果比较好。
- 声明变量
变量声明为非Variant,避免使用浮点型变量。
- Range("A1") 比 [A1] 更快
因为 [A1] 需要调用Application.Evaludate("A1")。
- 禁止屏幕刷新、计算模式手动
Application.ScreenUpdating = False ' 开启屏幕刷新 Application.ScreenUpdating = True ' 关闭屏幕刷新 Application.Calculation = xlCalculationManual ' 计算模式为手动 Application.Calculation = xlCalculationAutomatic ' 计算模式为自动
需要注意的是在sub结束的时候,要将计算模式改回为自动,这样表格中才能自动进行公式计算等。
-
使用工作表(Worksheet)的数字编号比引用“名称”更快
直接使用 sheet(1) 比 引用工作表的名字更快,但是不安全,需要注意sheet的实际编号,以及新建、删除工作表等操作,引起sheet的编号变化。 -
常量比变量更快
-
For each 比 For 更快
-
尽量不用Selection
代码中有
***.select / selection 组合的,都尽量直接引用对象 -
对同一目标进行多次操作时,尽量用 With...End With
-
内置函数比自己写的函数快,即尽量不重复造轮子
-
明确对象属性
引用 Cell(1,1).value 比 Cell(1,1) 快 -
多用简单句,少用复合句
If A And B Then ... End If 比两个If语句慢 -
并列条件Elseif 比Select快
所以遇到多重条件判断时,把最常出现的条件放在前面,减少选择次数 -
For 比 Do While快
-
使用内存数组变量
Range("A1:F65536") = arr