欢迎登陆真网站,您的到来是我们的荣幸。 登陆 注册 忘记密码? ☆设为首页 △加入收藏
欢迎加入真幸福QQ群
电脑知识: 基础知识 网络技术 操作系统 办公软件 电脑维修 电脑安全 windows7 windows8 windows10 服务器教程 平板电脑 视频播放教程 网络应用 互联网 工具软件 浏览器教程 QQ技巧 输入法教程 影视制作 YY教程 wps教程 word教程 Excel教程 PowerPoint
云南西双版纳特产小花糯玉米真空包装


将文本转换为电子邮件的VBA代码
VBA动态设置Excel斜线表头的方法
EXCEL copy RangeCell的例子
让EXCEL文件只能在某台计算机上打开的VBA代码
Excel使用函数帮助
excel target对象
Excel中vba Unload介绍
Excel如何保证小数点计算无误
Excel中IPmt函数用法
Excel中IsEmpty函数用法
VBA代码编写技巧
【 来源:网络 】【 点击:1 】 【 发布时间:2017_03_03 08:59:59 】

  方法1:尽量使用VBA原有的属性、方法和Worksheet函数

  由于Excel对象多达百多个,对象的属性、方法、事件多不胜数,对于初学者来说可能对它们不全部了解,这就产生了编程者经常编写与Excel对象的属性、方法相同功能的VBA代码段,而这些代码段的运行效率显然与Excel对象的属性、方法完成任务的速度相差甚大。例如用Range的属性CurrentRegion来返回 Range 对象,该对象代表当前区。(当前区指以任意空白行及空白列的组合为边界的区域)。同样功能的VBA代码需数十行。因此编程前应尽可能多地了解Excel对象的属性、方法。

  充分利用Worksheet函数是提高程序运行速度的极度有效的方法。如求平均工资的例子:

  For Each c In Worksheet(1).Range(″A1:A1000″)

  Totalvalue = Totalvalue + c.value

  Next

  Averagevalue = Totalvalue / Worksheet(1).Range(″A1:A1000″).Rows.Count

  而下面代码程序比上面例子快得多:

  Averagevalue=Application.WorksheetFunction.Average(Worksheets(1).Range(″A1:A1000″))

  其它函数如Count,Counta,Countif,Match,Lookup等等,都能代替相同功能的VBA程序代码,提高程序的运行速度。

  方法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

  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:减少对象的激活和选择

  如果你的通过录制宏来学习VBA的,则你的VBA程序里一定充满了对象的激活和选择,例如

  Workbooks(XXX).Activate、Sheets(XXX).Select、Range(XXX).Select等,但事实上大多数情况下这些操作不是必需的。例如

  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程序前面三条做得比较差,则关闭屏幕更新是提高VBA程序运行速度的最有效的方法,缩短运行时间2/3左右。关闭屏幕更新的方法:

  Application.ScreenUpdate = False

  请不要忘记VBA程序运行结束时再将该值设回来:

  Application.ScreenUpdate = True

本网站由川南居提供技术支持,fkzxf版权所有 浙ICP备12031891号
淳安分站 淳安分站