VBA中的计时器问题
我从网上下载了一个用vba引用API计时函数的程序,运行后也正常。但程序中有几个问题我不明白,请高手给我解答。程序如下:
Private Declare Function GetTickCount Lib "kernel32.dll" () As Long‘声明API函数
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) ’声明API函数
Const InterVal = 1000 '自定义的时间间隔
Dim State As Boolean
Private Sub CommandButton1_Click()
Dim preT As Long, curT As Long, a1 As Integer
State = True
preT = GetTickCount '老时间?
Do While State = True
curT = GetTickCount '新时间?
If curT - preT >= InterVal * (a1 + 1)
a1 = a1 + 1
TextBox1 = a1
DoEvents
End If
Sleep (20)
TextBox2 = Time
Loop
问题有以下几个:
1、为什么要同时声明GetTickCount和Sleep两个延时函数,只声明GetTickCount一个函数不行吗?
2、程序中“If curT - preT >= InterVal * (a1 + 1) ”一句是什么意思?
3、“Sleep (20)”起什么作用?
谢谢!
[解决办法]
sleep后边写的多少就是延迟多少毫秒,个人感觉100以下都可以,如果你不需要特别精确的话。如果不适用延迟,实际上cpu处理一次循环的时间是非常快的,你的计时器需要1s才会进行一次事件响应,1s内就会进行很多次无用的循环,设置延迟后那么最多只会进行1000/延迟 次的循环,不用sleep没试过,搞不好会死机。
a1+1是指经过了一个间隔时间 ,对