楼主 chrisfang |
Timer函数是VBA中自带的函数,timeGetTime函数是Windows API函数,两个函数都可以用作计时器,但两者也有不少区别。下面分几个方面来说明: 首先来简单看一下两个函数的用法,要定制一个5秒钟的延时,可以分别使用以下两段代码:
从以上两段程序代码可以看出,两个函数用法基本一致,但由于第二个函数是API函数,所以事先需要进行声明。此外,在定时时间单位上也有所不同,前者以秒为单位,后者则以毫米(ms)为单位。事实上,两者的区别还不止这些: 1,首先,Timer函数记录的数值是当天的时间序列值,也就是从当天0点开始到当前时间点上所经历的秒数。当从23:59分钟跨越到0点是,Timer函数的时间也重新归零开始计算。因此,如果在午夜时分运行使用Timer函数的程序,并且跨越0点时间的,程序很可能会出现问题。 而timeGetTime函数所记录的是从开机到目前所经历的时间,并且以毫秒为单位。所以只要机器一直开着,这个函数所能返回的数值就不断递增而不会重复。 2,虽然在第一段代码中,Timer函数的延时参数以秒为单位,但仍旧可以输入小于1的数值来表示小于1秒钟的延时时间。但需要注意的是,在Windows系统中,Timer函数的最小有效时间大约为0.055秒(随系统不同而有可能不同),也就是说小于0.055秒的时间内,Timer函数数值有可能不能及时反应变化。 而timeGetTime函数可以支持1毫米的间隔时间,因此在需要进行精确定时的场合,使用timeGetTime函数更理想。 |
2楼 水星钓鱼 |
学习了,最后一行有个错别字“1毫米”应该是“1毫秒”。 |
3楼 0Mouse |
现在要比较的是timer和timeGetTime的准确性,第2段代码的第4行不应该再用timer,而要用timeGetTime,应该是一时手误了。 While Timer < BeginTime + 5000 '循环等待5秒钟 改成 While timeGetTime < BeginTime + 5000 '循环等待5秒钟 |