一、两者的对象不同
1)Access计时器是内置在窗体对象里,设置窗体的TimerInterval属性即可,这个值设置为0则关闭定时器, 设置为非0则打开计时器
2)VB计时器是一个独立的控件。Timer1.Interval=3000 这样设置,且还要设置Timer1.Enabled=True
二、两者可设置定时的时间不同
1)TimerInterval属性设置为0 和 2147483647 之间的长整数值。
可以使用 TimerInterval 属性来指定窗体上 Timer 事件之间的时间间隔(用毫秒表示)。可读/写 Long 类型。
expression.TimerInterval
expression 必选。一个表达式,返回“适用于”列表中的某个对象。
注解
TimerInterval属性设置为0 和 2147483647 之间的长整数值。
使用窗体的属性表、 宏或 Visual Basic for Applications (VBA) 代码,您可以设置此属性。
注意: 在使用 VBA 时,可以在窗体的 Load 事件中设置 TimerInterval 属性。
若要以 TimerInterval 属性指定的时间间隔来运行 VBA 代码,请将该代码放在窗体的 Timer 事件过程中。例如,若要每隔 30 秒重新查询一次记录,请将该代码放在窗体的 Timer 事件过程中以重新查询记录,然后将 TimerInterval 属性设置为 30000。
示例
以下示例演示如何通过显示和隐藏按钮上的图标来在窗体上创建闪动按钮。窗体的 Load 事件过程将窗体的 TimerInterval 属性设置为 1000,以便图标显示每秒切换一次。
Sub Form_Load()
Me.TimerInterval = 1000
End Sub
Sub Form_Timer()
Static intShowPicture As Integer
If intShowPicture Then
' Show icon.
Me!btnPicture.Picture = "C:\Icons\Flash.ico"
Else
' Don't show icon.
Me!btnPicture.Picture = ""
End If
intShowPicture = Not intShowPicture
End Sub
2)VB定时器的Interval最多只能设置为65535毫秒
要超过这个值,必须使用其它办法,如
使用纯 VB代码来实现长时间的定时
Private Sub Form_Load()
Timer1.Interval = 60000
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Static s_Minutes As Long
s_Minutes = s_Minutes + 1
If s_Minutes = 60 Then
s_Minutes = 0
Debug.Print "一小时到了"
End If
End Sub
或使用API来实现更长的定时
允许长延时的 Timer, 长达 49 天以上。
'模块中代码
Dim lTimerId As Long
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Private Sub TimerProc(ByVal lHwnd As Long, ByVal lMsg As Long, ByVal lTimerId As Long, ByVal lTime As Long)
Dim lResult As Long
lResult = StopTimer(lTimerId)
Call InsertYourProcessNameHere
'code to be executed after interval
End Sub
Public Sub StartTimer(lInterval As Long) 'convert interval to milliseconds prior to passing
lTimerId = SetTimer(0, 0, lInterval, AddressOf TimerProc)
End Sub
Public Function StopTimer(lTimerId As Long) As Long
'must pass the TimerId returned by SetTimer
StopTimer = KillTimer(0, lTimerId)
End Function
'调用方式
Call StartTimer(5000) '5 seconds
相关讨论:
TimerInterval的用法: http://www.office-cn.net/thread-8222-1-1.html