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) 多次使用的数值尽量定义为常量,便于修改与查找,例如圆周率等
---------------------------------------
感谢关注,支持原创!
|
|