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

作者:iamlaosong

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

VBA通常在程序开始加两句:

Application.ScreenUpdating = False

Application.Calculation = xlCalculationManual

在结尾处再恢复:

Application.Calculation = xlCalculationAutomatic

Application.ScreenUpdating = True

需要注意的是,2003版上述两个计算状态对应的名称是:xlManual和xlAutomatic。

时间: 2024-08-21 09:45:03

【VBA研究】Application.Calculation状态影响VBA运行速度的相关文章

【VBA研究】VBA做了个简单的试题生成工具

作者:iamlasong 单位对新上岗的员工进行培训,培训结束后,需要进行考试,需要一个简单的考试系统,让新员工既可以自己练习,也可以进行测试,为此,我们做了一个题库,员工可以自己生成一套考题,测试自己的掌握程度,也可以集中起来进行考试,测试培训效果. 系统数据库很简单,主要有两个表,一个是题库,一个是成绩. create table EMSAPP_TEST_QUESTION ( type                  CHAR(1), id                    NUMBE

【VBA研究】VBA产生不重复随机数

作者:iamlasong VBA编程实现不重复随机数输出.VBA里的随机函数是RND,在工作表中随机函数是RAND,一字之差,可要记好了.RND取值范围是[0,1),意思是0和1之间的一个随机数,包含0,但不包含1. 1.用法 语法:Rnd[(number)] 如果 number 的值是 Randomize 生成 小于 0 ,每次都使用 number 作为随机数种子得到的相同结果. 大于 0 ,以上一个随机数为种子产生下一个随机数. 等于 0 ,产生与最近生成的随机数相同的随机数. 省略, 以上

【VBA研究】VBA通过HTTP协议实现邮件轨迹跟踪查询

作者:iamlasong 1.接口说明 通过互联网訪问,运单跟踪信息查询接口基于HTTP协议开发,接口为RESTFul风格的Web Service,信息交互过程为用户按我方提供的web service地址进行调用,我方接到调用请求后,为用户返回JSON格式组织的数据信息.用户根据约定的接口规范对数据进行解析. 接口调用为HTTP请求的方式,每一次由用户发起的HTTP请求,须要设置验证信息,详细方法是,在HTTP Header部分添加version及authenticate属性,属性值在联调測试之

如何设置VBA代码的密码?如何取消VBA代码的密码?

经常有网友问,用Access把软件开发好了,怎么样设置VBA代码的密码?以保护自己的代码不被同事修改.这里简单整理了一下.设置VBA代码的密码及取消VBA代码的密码步骤如下:1.打开任意一个窗体,进入设计视图,按工具栏“查看代码”按钮,如下图: 2.进入代码区再点工具栏“工具”按钮→“属性”,如下图: 3.点“保护”选项,将“查看时锁定工程”按钮打钩→在“查看工程属性的密码”设置你需要的密码,或者是不需要密码就把原有的密码删除即可,如下图: 设置代码如下: Dim a As Stringa =

【VBA研究】用VBA取得EXCEL随意列有效行数

作者:iamlaosong 用VBA对Excel文件进行处理的时候,keyword段的列号编程时往往是不知道的.须要通过參数设定才干知道,因此.我们编程的时候,就不能用这种语句取有效行数: lineno = [B65536].End(xlUp).Row          '从下至上找有效行数 上述语句中的列名"B"假设是变量.能够用字符串连接的方式实现,即: pos_ems = "C" lineno = Range(pos_ems & "65536

[转]【VBA研究】VBA中日期和时间相关的计算

作者:iamlaosong http://blog.csdn.net/iamlaosong/article/details/18458253 VBA中取当前日期的函数是Date,当前时间的函数是Time,当前日期和时间一起取是Now.日期转换成年月日的函数分别是:Year.Month.Day,参数可以用Date或Now取出的值.时间转换成时分秒的函数分别是:Hour.Minute.Second,参数可以用Time或Now取出的值. 例如:   MsgBox "当前时间:" &

【VBA研究】用VBA取得EXCEL任意列有效行数

作者:iamlaosong 用VBA对Excel文件进行处理的时候,关键字段的列号编程时往往是不知道的,需要通过参数设定才能知道,因此,我们编程的时候,就不能用这样的语句取有效行数: lineno = [B65536].End(xlUp).Row 上述语句中的列名"B"如果是变量,可以用字符串连接的方式实现,即: pos_ems = "C" lineno = Range(pos_ems & "65536").End(xlUp).Row 如

【VBA研究】方法quit作用于IWebBrowser2失败怎么办

作者:iamlaosong 用VBA编程实现自动读取网页数据,在读取过程中关闭网页时遇到这样一个错误:" 方法quit作用IWebBrowser2失败",无法执行quit方法,但其它属性没有问题,百思未得其解,其源代码如下: Sub login3() Dim ie1 As Object lineno = [A65536].End(xlUp).Row '行数 For row1 = 2 To lineno ems_id = Trim(Cells(row1, 1)) Set ie1 = Cr

【VBA研究】工作表自己主动筛选模式检測

作者:iamlaosong 用VBA程序处理Excel数据文件.用户的数据文件有时处于自己主动筛选模式,往往导致数据处理不对.为此,须要检測工作表是否处于该模式,假设是,则去掉自己主动筛选.语句例如以下: If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter 这个语句一般仅仅用于去掉自己主动筛选,尽管Selection.AutoFilter也能够加上自己主动筛选,但筛选位置却可能在当前单元格处,所以要注意.加自己主动筛选前,