编写高效Excel VBA代码的最佳实践(二).doc

编写高效Excel VBA代码的最佳实践(二).doc

ID:59601289

大小:72.50 KB

页数:10页

时间:2020-11-14

编写高效Excel VBA代码的最佳实践(二).doc_第1页
编写高效Excel VBA代码的最佳实践(二).doc_第2页
编写高效Excel VBA代码的最佳实践(二).doc_第3页
编写高效Excel VBA代码的最佳实践(二).doc_第4页
编写高效Excel VBA代码的最佳实践(二).doc_第5页
资源描述:

《编写高效Excel VBA代码的最佳实践(二).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编写高效ExcelVBA代码的最佳实践(二)时间:2009-06-1618:38:44来源:网络作者:未知点击:0次    尽可能少使用“.”,使用对象变量    在前面已经介绍过的对长对象引用使用对象变量以及使用With…End With等都是简化”.”的方法。因为在代码中的每个句点都表示至少一个(而且可能是多个)过程调用,而这些过程调用必·尽可能少使用“.”,使用对象变量在前面已经介绍过的对长对象引用使用对象变量以及使用With…EndWith等都是简化”.”的方法。因为在代码中的每个句点都表示至少一个(而且可能是多个)过程调用,而这些过程调用必须在后台执行

2、。真正好的做法是在局部进行缓存对象引用,例如,应该把对象模型中较高层次的对象引用保存到局部对象变量中,然后用这些对象引用创建其他较低层次的对象引用。例如,引用某单元格数据时,可用如下代码: DimiAsLongFori=1to10Workbooks("Book1.xls").Worksheets("Sheet1").Cells(1,i).Value=iNexti但下面的代码运行效率更高,因为代码中引用Workbook对象和Worksheet对象的调用命令只执行一次,而上面的代码中却要执行10次。DimwsAsWorksheetDimiAsLongSetws=Wo

3、rkbooks("Book1.xls").Worksheets("Sheet1")Fori=1to10ws.Cells(1,i).Value=iNexti当您一遍又一遍的使用相同对象引用时,您可以将该对象引用设置成一个变量,然后使用该变量代替对象引用。这样,您在代码中只需对该对象变量进行引用即可。例如,下面的示例在每行中调用Workbook对象的Sheets属性、Range属性和Value属性三次,当您循环1000次时,总共要调用属性6000次。SubDoThis1()DimStartAsDouble,FinishAsDoubleStart=Timer'----

4、----------------------------------DimNAsLongForN=1To1000Workbooks("Book1").Sheets(1).Range("c5").Value=10Workbooks("Book1").Sheets(1).Range("d10").Value=12Next'--------------------------------------Finish=TimerMsgBox"本次运行的时间是"&Finish-StartEndSub您能在循环开始前通过设置Workbooks(“Book1”).Sheets(1

5、)作为一个对象变量来优化上面的例子,下面的示例在每行仅调用一个Range属性,当循环1000次时,总共只调用该属性2000次。注意,“Value”是一个缺省属性,通常不需要明确指定它,它将被自动调用。因此,该属性在下面的代码中被忽略。然而,就养成良好的编程习惯而言,还是建议您最好写明该属性。SubDoThis2()'快约35%以上DimStartAsDouble,FinishAsDoubleStart=Timer'--------------------------------------DimThisBookSheetAsObject,NAsLongSetTh

6、isBookSheet=Workbooks("Book1").Sheets(1)ForN=1To1000ThisBookSheet.Range("c5")=10ThisBookSheet.Range("d10")=12Next'--------------------------------------Finish=TimerMsgBox"本次运行的时间是"&Finish-StartEndSub您可以比较这两个示例的运行速度,它们都得到同样的结果,但在我的机子上运行时,第二个示例比第一个快60%。当然,您还能使用With…EndWith语句获得相同的结果。您也能

7、不设置明确的对象变量,而是使用With语句减少对象的重复引用。上面的示例也能使用下面的代码,该代码仅调用Workbooks属性和Sheets属性一次,当循环1000次时,总共调用1000次属性。SubDoThis3()'快约35%以上DimStartAsDouble,FinishAsDoubleStart=Timer'--------------------------------------DimNAsLongWithWorkbooks("Book1").Sheets(1)ForN=1To1000.Range("c5")=10.Range("d10")=12N

8、extEndWith'-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。