Private Declare Function GetTickCount Lib "kernel32" () As Long Function 延时函数(延时时间单位毫秒 As Long) As Long On Error GoTo err: Dim I1 As Long Dim J1 As Long I1 = GetTickCount J1 = GetTickCount Do Until J1 - I1 > 延时时间单位毫秒 J1 = GetTickCount DoEvents Loop 延时函数 = 1 Exit Function err: 延时函数 = 0 End Function
Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)Sleep(1000) '1 second
呵呵,我也来private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) sleep()
其实我更菜,问我法语还好一点 我觉得先学basic 以前的版本,别一下跳到vb
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Private Sub Command1_Click() DoEvents Sleep 1000 End Sub
用timer函数也可以 st=vba.timer do while vba.timer<st+1 doevents loop
我觉得用time控件也可以的,这样更简单。
想要做什么的? 用Timer控件蛮灵的
Private Declare Function GetTickCount Lib "kernel32" () As LongSub Delay1() Dim t As Stringt = GetTickCount() Do DoEvents Loop Until GetTickCount - t > 200End Sub
用sleep时其它进程会停止吧? 用延迟时其它进程不会受到影响 上边的就是延迟200毫秒!!
调用api, 使用sleep(1000)=延时1秒
如果需要精确到毫秒用Api,如果只需要精确到秒,只要用Timer控件或Do循环即可! 如: Dim GDataT as string gdatat=time Do While datadiff(gdatat,time)<1 Loop
'延时程序 Public Sub DelayTime(ByVal nSecond As Integer) Dim EndTime As Date EndTime = DateAdd("s", nSecond, Time) While Time < EndTime DoEvents Wend End Sub讨厌API,所以自己写了一个!!
Function 延时函数(延时时间单位毫秒 As Long) As Long
On Error GoTo err:
Dim I1 As Long
Dim J1 As Long
I1 = GetTickCount
J1 = GetTickCount
Do Until J1 - I1 > 延时时间单位毫秒
J1 = GetTickCount
DoEvents
Loop
延时函数 = 1
Exit Function
err:
延时函数 = 0
End Function
sleep()
我觉得先学basic 以前的版本,别一下跳到vb
DoEvents
Sleep 1000
End Sub
st=vba.timer
do while vba.timer<st+1
doevents
loop
用Timer控件蛮灵的
Dim t As Stringt = GetTickCount()
Do
DoEvents
Loop Until GetTickCount - t > 200End Sub
用延迟时其它进程不会受到影响
上边的就是延迟200毫秒!!
使用sleep(1000)=延时1秒
如:
Dim GDataT as string
gdatat=time
Do While datadiff(gdatat,time)<1
Loop
Public Sub DelayTime(ByVal nSecond As Integer)
Dim EndTime As Date
EndTime = DateAdd("s", nSecond, Time)
While Time < EndTime
DoEvents
Wend
End Sub讨厌API,所以自己写了一个!!