欢迎来到天天文库
浏览记录
ID:28194930
大小:217.00 KB
页数:15页
时间:2018-12-07
《如何优化vba代码并使程序尽可能快的运行》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、如何优化VBA代码并使程序尽可能快的运行如何优化VBA代码并使程序尽可能快的运行速度问题一直是VBA程序值得关注的一个方谢。当您编写了一个对大量数据进行操作的程序后,在运行时可能会发现程序运行得很慢,有的甚至达好儿分钟,就像Excel应用程序已崩溃了一样。但当您发现程序确实在运行,并得到正确的结果后,您可能就会想到如何使程序更快的运行了。当然,代码运行速度慢川'能是VBA程序的一个缺点,这也可能是程序语言本身的一个原因,但我们也可以找到一些方法优化VBA代码并使程序尽可能快的运行。下面是我整理的一些优化VBA代码或提高程序
2、运行速度的方法,有些方法是我们在编程屮好的做法和应该养成的好习惯,希望能带给您一些有益的参考。高质量的程序和运行效率是需要不断实践,并在实践中不断总结和积累经验的,也希望您能将在编写程序过程中发现的一些优化方法介绍给大家共享。1、尽量简化代码通过简化代码,可以提高程序的性能。您可以将通用过程编写为子过程来调用。例如,假设有一个应用程序需要在不同的地方实现查找一定范围内的某个特殊条目,在一个没有简化代码的应用程序中,不同的过程可能需要应用各自的算法以实现在某个范围内查找某一条目,修改每个过程使其采用一个更有效的算法并不是一件
3、很容易的事。而一个简化的程序则只有一个查找算法,即将该查找算法编写成通用的子程序,耑要查找某个范围的过程都调用该子程序,通过在查找方法的子程序中优化查找算法,使得调用该方法的所有过程都享受性能提高所带来的好处。另外,删除所有无关的代码,这在所录制宏屮表现得尤为明显。在录制宏时,经常会产生一些与所实现的功能无关的代码,您可以将这些代码删除,以使得代码得以简化。在下面将要讲到的设置对象变量代替长对象引用,使用With*“EndWith语句、执行ForEach…Next循环语句,根据程序环境尽量减少OLE引用,等等,均是简化代码
4、的好方法。2、强制声明变量在VBE编辑器屮的菜单“工具一一选项”对话框屮“编辑器”选项卡屮,您应该始终保持“要求变量声明”复选框被选屮,这样将在模块代码顶部出现OptionExplicit语句,要求您在编写代码时对所有出现的变量均进行声明,这样,在使用变量吋减少内存需求并加速性能。(1)要节省内存资源,必须始终用特定的数据类型声明所有变量。如果不使用特定的数据类型声明变量,VBA会创建Variant类型的变量,这将比任何其他数据类型要求更多的内存。(2)清楚每种数据类型需要多少N存以及它可以存储的值的范阐。除使用较小的数据
5、类型会导致隐性转换的情况外,应始终使用尽可能小的数据类沏。例如,因为Integer类型的变呈将被转换成Long类型的变量,应该将那些存储整型值的变量声明为Long类型,而不是Integer类型。(3)除非确实需要,应避免使用浮点数据类型。尽管Currency数据类型更大,但它比Single数据类型快,因为Currency数据类型不使用浮点处理器。(4)如果在一个过程屮多次引用一个对象,可以创建对象变ft,并将对给对象的引用指派给它。因为对象变S:存储对象在内存中的位罝,VBA将不必再次查找其位罝。(5)将对象变量声明为特定
6、的类型(不是Object类型),以便利用早期绑定。3、减少变量的作用范围并及时释放变量主要是对象变量,在其使用完后,及时释放。例如,DimTempObjAsAnyObject,AnObjAsAnyObjectSetTeinpObj=NewAnyObjectSetAnObj=TempObjSetTempObj=Nothing‘释放对象变量4、尽可能使用早期绑定绑定是指将程序调用与实际代码相匹配。为了实现早期绑定,先应创建对对象库的引用。早期绑定可以在代码中使用定义在对象库中的常量,可以自动列出对象的方法和属性,但早期绑定只有
7、在所控制的对象拥有独立的类型库或对象库文件才适用且还需要己安装了特定的库。而后期绑定则只是在运行时才知道对象的类型并对对象进行引用,因此不具备上述特点。使用早期绑定创建对象通常更有效率,使代码能获得更好的性能。因为对象的早期绑定引用在编译时可以通过VBE的解析,而不是通过运行吋模块解析,因此早期绑定的性能要好得多。里然在程序设计时不可能总是使用早期绑定,但应该尽可能使用它。5、关闭屏幕刷新在Excel屮,某ScreenUpdating属性伉的默认伉为True,这样当写数裾到工作表或者执行任何导致其显示属性变化的动作时,Ex
8、cel的屏幕界面将会不断的刷新,不仅影响显示,而且影响程序运行的速度。您可以在进入主程序运行前将解幕刪新属性关闭,即用Application.ScreenUpdating=False语句关闭屏幕刷新,这样将大大改善程序的运行速度。但在程序运行完成前,要确保将其恢复为原来的设置,即将ScreenUpdat
此文档下载收益归作者所有