【VBA研究】Application.Calculation状态影响VBA运行速度
2015-01-05 17:21
567 查看
作者: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
发现一个现象,当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
相关文章推荐
- 整理:影响.Net程序运行速度的因素
- 关于多媒体程序运行速度的研究
- Application整个运行当中需要用到的变量以及监听Activity的活动状态
- 为什么会有许多人认为C盘太满会影响电脑运行速度?
- 路由协议一样影响网络运行速度
- 腾讯管家与本地运行的jquery冲突,影响页面请求速度
- Java程序员如何看待application运行系统对GC的影响
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到
- 代码局部性对程序运行速度的影响
- 利用JMX监控Websphere Application Server6.1的J2EE应用服务运行状态
- 杀毒软件影响python运行速度
- 服务器运行的状态,修改Spring中的applicationContext.xml配置文件
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到
- 影响电脑速度的因素 影响电脑运行速度的因素有哪些
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积
- VBA代码执行过程中,显示程序的运行状态
- 我们通过一个服务器程序,以研究backlog参数对listen系统调用的影响,运行截图如下
- 服务器运行的状态,修改Spring中的applicationContext.xml配置文件
- 关于多媒体程序运行速度的研究
- 路由协议一样影响网络运行速度