Excel vba入门系列讲座(8)

2020-02-22 11:11

充分利用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

以上是提高VBA运行效率的比较有效的几种方法。

<[dvnews_page=(7):如何在excel里使用定时器]

用过 excel 里的加载宏 \定时保存\吗?可惜它的源程序

是加密的,现在就上传一篇介绍实现它的文档。

在 office 里有个方法是 application.ontime ,具体函数如下: expression.OnTime(EarliestTime, Procedure, LatestTime, Schedule) 如果想进一步了解,请参阅 excel 的帮助。

这个函数是用来安排一个过程在将来的特定时间运行,(可为某个日期的指定时间,也可为指定的时间段之后)。通过这个函数我们就可以在 excel 里编写自己的定时程序了。下面就举两个例子来说明它。

1.在下午 17:00:00 的时候显示一个对话框。 Sub Run_it()

Application.OnTime TimeValue(\ ’设置定时器在 17:00:00 激活,激活后运行 Show_my_msg 。 End Sub

Sub Show_my_msg()

msg = MsgBox(\现在是 17:00:00 !\自定义信息\ End Sub

2.模仿 excel 97 里的 \自动保存宏\在这里定时 5 秒出现一次


Excel vba入门系列讲座(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高数笔记大全

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: