|
|
Sub delay(ByVal n As Single) '函数 delay 用于延时(延时秒数 n 类型 Single)
Dim tm1 As Single, tm2 As Single '定义记录时间变量 tm1 tm2 类型 Single
tm1 = Timer '记录系统现在时间到 tm1 此时间为开始延时时间
Do '循环点 先执行到Loop 返回这里继续
tm2 = Timer '赋值现在时间到 tm2 此时间为系统当前时间,在延时开始时间之后
If tm2 < tm1 Then tm2 = tm2 + 86400 '这里判断特殊情况 在下面说明#1
If tm2 - tm1 > n Then Exit Do '判断tm2-tm1大于延时秒数(n)就跳处循环下面说明#2
DoEvents '转让控制权,以便让操作系统处理其它的事件
Loop '返回循环点 继续循环
End Sub
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Timer函数返回的是从午夜开始到现在经过的秒数 用24小时描述就是0点开始
[24小时就是86400秒]
#1特殊判断过程
看了上面的Timer函数的返回值就好解释了,如果是从23点59分58秒开始延时
tm1记录86398秒(由Timer函数返回) 假如延时5秒,则2秒后,tm2记录0秒(由
Timer函数返回)因为2秒后系统是24点就是0点Timer函数返回0秒 则tm2小于tm1
必须给tm2重新赋值才能正确延时,tim2=tim2+86400(也就是再加上24小时)此时
延时正确
#2循环跳出
每次循环都会把Timer函数(返回现在的时间)的返回值赋给tm2直到tm2-tm1
大于延时秒数(n)则跳出循环拿会控制权,结束延时!~~ |
|