excel vba中的秒表?

时间:2014-01-02 10:16:09

标签: excel vba stopwatch

我正在尝试设置一个基本的秒表来跟踪已用时间。 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表上运行计时器。

2 个答案:

答案 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

youtube

link

答案 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运行时,它不会安排自己再次运行。