欢迎来到天天文库
浏览记录
ID:6033609
大小:27.50 KB
页数:5页
时间:2017-12-31
《提高 excel中 vba 编程效率探究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、提高Excel中VBA编程效率探究 中图分类号:TP文献标识码:A文章编号:1007-0745(2013)09-0350-01摘要:由于MicrosoftOffice办公套件的广泛应用,以及该软件版本的不断提升,功能不断完善,在Office办公套件平台上开发出的的VBA应用程序越来越多,而VBA是一种宏语言,在运行速度上有很大的限制。因此VBA编程的方法直接关系到VBA程序运行的效率,本文列举了一些提高VBA程序运行效率的方法。关键词:VBA属性方法函数由于微软Office软件的普及,人们常见的办公软件Office软件中的Word、Excel、Access、Power
2、point都可以利用VBA使这些软件的应用更高效率,例如:通过一段VBA代码,可以实现画面的切换;可以实现复杂逻辑的统计等。掌握了VBA,可以发挥以下作用:1.规范用户的操作,控制用户的操作行为;2.操作界面人性化,方便用户的操作;3.多个步骤的手工操作通过执行VBA代码可以迅速的实现;4.实现一些VB无法实现的功能5为了办公的需求,提高VBA的执行效率也成为了EXCEL开发中的首要问题。经过多年的学习,本人总结了以下几点:一、尽量使用VBA原有的属性、方法由于Excel对象多达百多个,对象的属性、方法、事件多不胜数,对于初学者来说可能对它们不全部了解,这就产生了编程者
3、经常编写与Excel对象的属性、方法相同功能的VBA代码段,而这些代码段的运行效率显然与Excel对象的属性、方法完成任务的速度相差甚大。例如:用Range的属性CurrentRegion来返回Range对象,该对象代表当前区。同样功能的VBA代码需数十行。因此编程前应尽可能多地了解Excel对象的属性、方法。充分利用Worksheet函数是提高程序运行速度的极度有效的方法。如求平均工资的例子:ForEachcInWorksheet(1).Range(″A1:A1000″)TotalValue=TotalValue+c.ValueNextAverageValue=Tot
4、alValue/Worksheet(1).Range(″A1:A1000″).Rows.Count而下面代码程序比上面例子快得多:AverageValue=Application.WorksheetFunction.Average(Worksheets(1).Range(″A1:A1000″))其它函数如Count,Counta,Countif,Match,Lookup5等等,都能代替相同功能的VBA程序代码,提高程序的运行速度。二、尽量减少使用对象引用,尤其在循环中每一个Excel对象的属性、方法的调用都需要通过OLE接口的一个或多个调用,这些OLE调用都是需要时间的
5、,减少使用对象引用能加快VBA代码的运行。例如1.使用With语句。Workbooks(1).Sheets(1).Range(″A1:A1000″).Font.Name=″Pay″Workbooks(1).Sheets(1).Range(″A1:A1000″).Font.FontStyle=″Bold″...则以下语句比上面的快WithWorkbooks(1).Sheets(1).Range(″A1:A1000″).Font.Name=″Pay″.FontStyle=″Bold″EndWith2.使用对象变量。如果你发现一个对象引用被多次使用,则你可以将此对象用Set设
6、置为对象变量,以减少对对象的访问。如:Workbooks(1).Sheets(1).Range(″A1″).Value=1005Workbooks(1).Sheets(1).Range(″A2″).Value=200则以下代码比上面的要快:SetMySheet=Workbooks(1).Sheets(1)MySheet.Range(″A1″).Value=100MySheet.Range(″A2″).Value=2003.在循环中要尽量减少对象的访问。Fork=1To1000Sheets(″Sheet1″).SelectCells(k,1).Value=Cells(1,
7、1).ValueNextk则以下代码比上面的要快:SetTheValue=Cells(1,1).ValueSheets(″Sheet1″).SelectFork=1To1000Cells(k,1).Value=TheValueNextk三、减少对象的激活和选择如果你的通过录制宏来学习VBA的,则你的VBA程序里一定充满了对象的激活和选择,例如Workbooks(XXX).Activate、Sheets(XXX).Select、Range(XXX).Select等,但事实上大多数情况下这些操作不是必需的。例如Sheets(″Sheet3″)
此文档下载收益归作者所有