首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VBA >

VBA中的计时器有关问题

2012-03-22 
VBA中的计时器问题我从网上下载了一个用vba引用API计时函数的程序,运行后也正常。但程序中有几个问题我不明

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是指经过了一个间隔时间 ,对

热点排行