提升VBA代码运行效率的常用方法

论坛 期权论坛 期权     
VBA代码集锦   2019-6-9 21:27   911   0

1)关闭屏幕刷新
Application.ScreenUpdating = False
Application.ScreenUpdating = True
2)关闭自动计算,代码运行完毕后再打开
Application.Calculation=xlCalculationManual
Application.Calculation=xlCalculationAutomatic
3)使用整数(Integer)和长整数(Long)来替换Single,Double,Currency类型的数据
运行速度:Long最快—Integer—Byte—Single—Double—Currency最慢
4)强制声明变量,避免使用变体
变体类型需要16个字节空间,而整数仅需要2个
5)使用变量,尽量避免使用属性
变量的存取速度是存取属性速度的20倍
6)录制的宏,测试删除所有无关代码
7)创建并使用对象变量
若过程中多次引用一个对象,可创建对象变量
例:
Workbooks(“aaa”).Sheets(“Sheet1”).Range(“A1”)=100
Workbooks(“aaa”).Sheets(“Sheet1”).Range(“B1”)=200
可以更改为:
Set MySheet = Workbooks(“aaa”).Sheets(“Sheet1”)
MySheet1.Range(“A1”)=100
MySheet1.Range(“b1”)=200
8)声明对象变量的类型并及时释放
详情见本公众号文章:VBA基础-对象变量的声明与使用
9)减少对某些对象的激活或者选中,使用With……End With语句,尽量减少对象引用
例:
Sheets("Sheet1").Select
Range("A1").Select
Selection.Copy
Range("C1").Select
ActiveSheet.Paste
Range("A2").Select
Application.CutCopyMode = False
Selection.Copy
Range("C2").Select
ActiveSheet.Paste
可更改为:
    SetMySheet = Sheets("Sheet1")
    WithMySheet
        .Range("A1").CopyRange("C1")
        .Range("A2").CopyRange("C2")
    End With
10) 退出程序前销毁程序中使用的对象
set xx=Nothing
11) For each循环比For Next循环快
12) 使用Len()检查字符串是否为空值
13) 使用Excel内置函数,无需自定义函数
例:For Each C In Range("A1:A100")
MySum = MySum + C.Value
Next C
可以更改为:
MySum =Application.WorksheetFunction.Sum(Range("A1:A100"))
14) 尽量使用数组,避免使用集合或者多个变量
15) 使用动态数组,而不是静态数组
16) 减少图片的使用
17) 多次使用的数值尽量定义为常量,便于修改与查找,例如圆周率等

---------------------------------------
感谢关注,支持原创!
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:5
帖子:1
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP