1、使用Excel原有的函数来进行计算
假如您采用循环的方式进行平均数的求解
代码如下 | 复制代码 |
For Each c In Range(″A1:A1000″) TotalValue = TotalValue + c.Value Next AverageValue = TotalValue /Range(″A1:A1000″).Rows.Count |
那么上述代码的执行效率,将比下面的代码低的多
代码如下 | 复制代码 |
AverageValue=Application.WorksheetFunction.Average(Range(″A1:A1000″)) |
希望同学们举一反三,能采用Excel自带函数、属性解决的问题,尽量不要自行扩展代码解决。
2、尽量减少使用对象引用,尤其在循环中
每一个Excel对象的属性、方法的调用都需要通过OLE接口的一个或多个调用,这些OLE调用都是需要时间的,减少使用对象引用能加快VBA代码的运行。例如
1.使用With语句
代码如下 | 复制代码 |
Workbooks(1).Sheets(1).Range(″A1:A1000″).Font.Name=″Pay″ Workbooks(1).Sheets(1).Range(″A1:A1000″).Font.FontStyle=″Bold″ ... |
则以下语句比上面的快
代码如下 | 复制代码 |
With Workbooks(1).Sheets(1).Range(″A1:A1000″).Font .Name = ″Pay″ .FontStyle = ″Bold″ ... End With |
(在With内部执行时,VB将在内存中维护一个临时对象,既如下面方法中一样相当于使用了一个临时变量,只是该临时变量是由系统定义系统命名的变量)
2.使用对象变量
如果你发现一个对象引用被多次使用,则你可以将此对象用Set 设置为对象变量,以减少对对象的访问。如:
代码如下 | 复制代码 |
Workbooks(1).Sheets(1).Range(″A1″).Value = 100 Workbooks(1).Sheets(1).Range(″A2″).Value = 200 |
则以下代码比上面的要快:
代码如下 | 复制代码 |
Set MySheet = Workbooks(1).Sheets(1) MySheet.Range(″A1″).Value = 100 MySheet.Range(″A2″).Value = 200 |
3.在循环中要尽量减少对象的访问
代码如下 | 复制代码 |
For k = 1 To 1000 Sheets(″Sheet1″).Select Cells(k,1).Value = Cells(1,1).Value Next k |
则以下代码比上面的要快:
代码如下 | 复制代码 |
Set TheValue = Cells(1,1).Value Sheets(″Sheet1″).Select For k = 1 To 1000 Cells(k,1).Value = TheValue Next k |
3、减少对象的激活和选择
代码如下 | 复制代码 |
Sheets(″Sheet3″).Select With Sheets(″Sheet3″) |
4、关闭屏幕更新
这应该是大多数使用Vba的童鞋都知道的方法,也是最有效的方法,但需要注意一点,就是关闭屏幕刷新后一定要记得,代码运行完毕后重新打开,特别是运行出错的时候要有正确的错误处理,来保障屏幕刷新可以重新被打开:
代码如下 | 复制代码 |
Application.ScreenUpdate = False '关闭屏幕刷新 On Error Goto ErrLab ErrLab: Application.ScreenUpdate = True |
'打开屏幕刷新
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔