以下是引用hnymlzs在2004-10-27 22:14:00的发言:
兰大侠你好: 能把下的代码给解释一下?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Terminate
Set appTime = Nothing
Set objBtn = Nothing
End Sub
Private Sub Workbook_Open()
Init (1000)
End Sub
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
Dim hTimer
Public objBtn As CommandBarControl
Sub TimerProc(ByVal hWnd&, ByVal Msg&, ByVal idEvent&, ByVal dwTime&)
DoEvents
On Error Resume Next
Range("A1") = Format(Now, "hh:mm:ss AM/PM")
End Sub
Sub Init(Interval&)
hTimer = SetTimer(0, 0, Interval, AddressOf TimerProc)
End Sub
Sub Terminate()
Call KillTimer(0, hTimer)
End Sub
学得可真快,都到API啦,我也不太懂,跟着学……
上传的代码可能只是一部分,蓝色部分放入thisworkbook模块,褐色部分在普通模块。
作用:类似电子时钟,每秒(1000毫秒)更新一次时间。
工作表打开时运行Init (1000),即运行SetTimer(0, 0, Interval, AddressOf TimerProc),其中Interval为Init 传来的1000;
SetTimer:API函数,用来分配定时器,周期性地在指定间隔的时间过去时调用过程;
有四个参数:第三个参数指定时间间隔,以毫秒为单位(此处1000);第四个参数指定函数的过程实例,即按定时器的通知调用过程,此处调用TimerProc过程。
TimerProc过程将系统时间(now)写入A1单元格,由于定时器的设定,每秒写一次。
关闭工作簿时运行Terminate,KillTimer也是API函数,用于清除定时器,终止调用。
|