我正在尝试设置一个基本的秒表来跟踪已用时间。 Button1应该从0开始计时,Button2停止监视,并记录自计时器启动以来已经过了多少分钟和秒。我把按钮放在工作表上,只需要一种方法来计算经过的时间。什么是最好的方法? 这是我一直在使用的代码
Private Sub CommandButton1_Click()
startTime = Timer
End Sub
Private Sub CommandButton2_Click()
Dim finalTime As Single
finalTime = Timer - startTime
MsgBox Format(finalTime, "0.00")
End Sub
此代码的问题是它只显示我点击button2后经过的时间。我需要在excel表上运行计时器。
答案 0 :(得分:2)
Public Started As Boolean
Dim myTime As Date
Sub StartTimer()
If Not Started Then
myTime = Time
Started = True
Else
If MsgBox("Do you really want to restart?", vbYesNo) = vbYes Then
myTime = Time
End If
End If
End Sub
Sub StopTimer()
If Not Started Then
MsgBox "The timer is stopped."
Else
MsgBox Format(Time - myTime, "hh:mm:ss")
Started = False
End If
End Sub
答案 1 :(得分:1)
如果您需要任何准确性,Excel可能不是这样做的地方。但如果距离足够近,那么我就是这样做的。
在标准模块中:
Public gbStop As Boolean
Public gdtStart As Date
Sub UpdateTime()
Sheet1.Range("rngTimer").Value = Now - gdtStart
DoEvents
If Not gbStop Then
Application.OnTime Now + TimeSerial(0, 0, 1), "UpdateTime"
End If
End Sub
在Sheet1的类模块中
Private Sub CommandButton1_Click()
gbStop = False
gdtStart = Now
Application.OnTime Now + TimeSerial(0, 0, 1), "UpdateTime"
End Sub
Private Sub CommandButton2_Click()
gbStop = True
End Sub
单击Button1时,gbStop设置为false,开始时间记录在公共变量中,UpdateTime过程计划在1秒后运行。
一秒钟后,UpdateTime运行并更改名为rngTimer的单元格的值,以显示在Now1和Button1_Click中记录的开始之间经过的时间。如果gbStop仍为False,则UpdateTime会自行安排在另一秒内再次运行。
最后,按Button2将公共变量gbStop设置为True。下次Updatetime运行时,它不会安排自己再次运行。