【VBA研究】Application.Calculation状态影响VBA运行速度

作者:iamlaosong

发现一个现象,当Application.Calculation为自动计算状态时,如果工作表中存有公式,2003版似乎并不降低VBA的运行速度,但2007版则影响很大,速度降低的特别明显,尤其是数据量大,又含有数组公式或者大量使用vlookup、match之类的函数时,速度降低的令人难以忍受。为此,必须将Application.Calculation状态改为人工模式,等运行结束再还原。另一个影响VBA速度的因素是屏幕刷新,为提高速度,可以临时关闭屏幕刷新。即:

VBA通常在程序开始加两句:
Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
在结尾处再恢复:
Application.Calculation = xlCalculationAutomatic 
Application.ScreenUpdating = True 

需要注意的是,2003版上述两个计算状态对应的名称是:xlManual和xlAutomatic,这个变量名称2007版也可以用。

此外,恢复成自动计算模式时,系统会将公式重新计算一遍,即使再恢复前保存文件,系统也会在保存前自动计算一遍,除非你将“保存工作簿时重新计算”选项关闭:

Application.CalculateBeforeSave = False



  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提高Excel VBA程序运行速度是每个开发者关注的重要问题。下面将介绍几个实用技巧来提高Excel VBA程序的运行速度: 1. 减少对Excel对象的读写:Excel对象的读写操作比较耗时,应尽量减少对其的访问。可以将数据读取到数组中进行处理,处理完成后再写回到Excel中。 2. 合理使用循环结构:使用合适的循环结构(如For循环、Do While循环)可以简化代码,减少重复计算的次数,提高程序的运行速度。 3. 关闭屏幕更新和自动计算:在代码执行过程中,将Application.ScreenUpdating和Application.Calculation设置为False,可以避免界面的闪烁和重复的计算,从而提高程序的运行速度。 4. 使用变量和常量:使用变量存储中间结果,在代码中引用变量比直接引用对象会更快。同时,使用常量来替代字符串和数值,能够提高代码的执行效率。 5. 避免使用Select和Activate:不要频繁使用Select和Activate方法,它们会导致程序的运行速度变慢。可以直接使用引用方式进行操作,如Range("A1").Value = "ABC"。 6. 使用数组和集合:使用数组和集合来存储数据,可以提高数据的访问速度。同时,避免使用大量的Excel公式,可以使用VBA代码来代替。 7. 优化算法和逻辑:对代码进行合理的重构,优化算法和逻辑,可以极大地提升程序的执行速度。 通过以上几个实用技巧,可以有效地提高Excel VBA程序的运行速度,提升开发效率和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值