admin 2025-11-04
189
【分享成果,随喜正能量】肉是一两一两的掉,一斤一斤的涨;钱是一块一块的赚,一百一百的花。由此可见:生活除了容易胖和容易穷,其它啥都不容易啊!。
《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。
教程共两册,八十四讲。今日的内容是”专题十一:VBA如何做到延时获得数据信息”:VBA中QueryTables提取股票历史交易信息
第一节使用实现延时获取数据这种方法在利用的时候非常简单,就是利用来暂停正在运行的宏直到指定时间。如果到达指定时间,继续运行。
1方法的讲解Wait方法暂停MicrosoftExcel的所有操作,并且,Wait起作用时可能禁止您对计算机做其他操作。不过,后台操作(如打印和重新计算)将继续进行。
语法:(Time)
expression:表示Application对象的变量。
Time:必需,数据类型是Variant,表示你想要恢复宏的时间,采用MicrosoftExcel日期格式。
实例:本示例暂停一个正在执行的宏,当执行到Wait语句时会停止,直到代码指定的时间今天下午21:53:20时才可继续执行。我们看下面的代码:
Submynz()'使用实现延时获取数据
Sheets("sheet1").Select
Fori=1To10000
Cells(1,1)=i
"21:53:20"
Cells(2,1)=Time()
Next
MsgBox("OK!")
Sub
代码的分析:上述代码在理论上可以达到我们的要求,但实际上却是不能顺利运行的,当代码执行到"21:53:20"时,会判断当前的时间是否小于给出的时间,如果小于,好,停止执行,这个时候程序会一直监听系统的时间,并判断这个时间与所给的时间是否一致,当监听到一致时,代码继续向下运行,但由于我给出的是一个循环语句,当代码再次执行到"21:53:20"时会判断一下实现是否是上述时间,很显然今天不会再有这个时间了,那么代码会一直停止,等待这个时间的出现,很遗憾将要等一天的时间。显然,这不是我们需要的。
由此可见,上述代码的延时,在某种程度上讲,是没有意义的,但是,如果代码一直是顺序执行,上面代码的意义将非常重要。
那么在循环语句中,如何给出代码延时定长的时间呢?这就需要下面的Now+TimeSerial(0,0,SecondsToWait)的语句了。
2Now+TimeSerial(0,0,SecondsToWait)的讲解我们先给大家介绍一下TimeSerial这个函数
TimeSerial函数返回包含特定的小时、分钟和秒所对应的时间的Variant(Date)。
语法:TimeSerial(hour,minute,second)
Hour必需;Variant(Integer)。介于0(12:00)和23(11:00)之间的数字(含这两个数字)或数值表达式。
minute必需;Variant(Integer)。任何数值表达式。
second必需;Variant(Integer)。任何数值表达式。
说明:上述的参数中,第二个和第三个参数是没有范围要求的,当任何参数超过此参数的正常范围时,它会递增到下一个更大的单元(如果适当)。例如,如果您指定75分钟,则计算结果为1小时15分钟。但是,如果任意单个参数超出-32,768到32,767的范围,则将发生错误。如果由这三个参数指定的时间导致日期位于可接受的数据范围之外,则将发生错误。
Now+TimeSerial(0,0,SecondsToWait)则表示为现在的时间之后的0时,0分,SecondsToWait秒,的时间点。有了这个语句,我们就可以轻松地实现定时延时了。
3定时延时的真正实现有了上面的讲解,我们来更正一下我们的代码:
SubmynzA()'使用实现延时获取数据
Sheets("sheet1").Select
Fori=1To100
Cells(1,1)=i
+TimeSerial(0,0,1)
Cells(2,1)=Time()
Next
MsgBox("OK!")
Sub
代码截图:
代码讲解:上述代码实现了每隔一秒钟,单元格“A1”获取信息数字会自动变换的效果,同时在A2的单元格会提示时间。
本节知识点回向:
①方法的意义是什么?
②Now+TimeSerial(0,0,SecondsToWait)的意义是什么?
③如何让某个单元格延时固定时间获得数据信息?
本节代码参考文件“011工作表.xlsm”
我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
【分享成果,随喜正能量】一个人在帮助别人的时候,实际上就是在帮助自己;一个人在祝福别人的时候,其实也在祝福自己;一个人在随喜他人的时候,就是在自我加持。你给别人点一支烛,你必然也得到一片光。。