欢迎来到亿搜云建站平台,全网营销云系统加盟中心!

海量企业网站模板 · 任您选择

美出特色,精出品质,一切为了企业更好的营销

隐藏侧栏
Beta
转载

提高Excel中Vba的运行速度的例子

       办公软件教程     2016-02-25     eycms     654     0    

  Vba做为提高Excel工作效率的一种重要方法,被广大的Excel Fans们广泛使用。但Vba作为一种脚本语言,其执行效率不会有想象的那么飞速,特别是编写一些比较复杂的代码时,但我们可以对我们编写的代码进行优化,以便于最大限度的提高代码的运行效率。

  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
  Range(″A1″).Value = 100
  Range(″A2″).Value = 200
可改为:

  With Sheets(″Sheet3″)
   .Range(″A1″).Value = 100
   .Range(″A2″).Value = 200
  End With

  4、关闭屏幕更新
  这应该是大多数使用Vba的童鞋都知道的方法,也是最有效的方法,但需要注意一点,就是关闭屏幕刷新后一定要记得,代码运行完毕后重新打开,特别是运行出错的时候要有正确的错误处理,来保障屏幕刷新可以重新被打开:

 代码如下复制代码
  Application.ScreenUpdate = False
    '关闭屏幕刷新
    On Error Goto ErrLab
  ErrLab:
  Application.ScreenUpdate = True

    '打开屏幕刷新


--结束END--

本文链接: http://www.eycms.cn/resources/office/1396.html (转载时请注明来源链接)

 
本文标签: 全部

下班PC阅读不方便?

手机也可以随时学习开发

微信关注公众号“亿搜云”
"亿搜云平台前端开发教学"
每日干货技术分享
 

×

成为 亿搜云平台 代理商!

关注

微信
关注

微信扫一扫
获取最新优惠信息

亿搜云平台公众号

客服

联系
客服

很高兴为您服务
尊敬的用户,欢迎您咨询,我们为新用户准备了优惠好礼。 咨询客服

联系客服:

在线QQ: 40819446

客服电话: 15250286283

售前咨询 售后服务
在线交谈 智能小云

工作时间:

周一至周五: 09:00 - 17:00

WAP

手机
访问

移动端访问
手机上也能选模板

亿搜云平台手机端