excel 如何使用VBA实现秒表?

roejwanj  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(270)

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

kwvwclae

kwvwclae1#

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

gdrx4gfi

gdrx4gfi2#

如果你需要精确度,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的单元格的值将更改为显示从Now到Button1_Click中记录的开始时间之间经过的时间。如果gbStop仍为False,UpdateTime将调度自己在另一秒钟后再次运行。
最后,您按下Button2,将公共变量gbStop设置为True。下一次运行Updatetime时,它不会安排自己再次运行。

相关问题