【问题标题】:Excel VBA Stopwatch: add pause button?Excel VBA秒表:添加暂停按钮?
【发布时间】:2017-06-16 20:35:05
【问题描述】:

我有一个带有开始/停止/清除按钮的秒表,可以将时间发布到电子表格中的其他单元格。我想添加一个暂停按钮,以允许用户暂停并恢复他们停止的计时器,但它会继续恢复并将中间经过的时间添加到总数中。例如,我点击开始并等待 5 分钟,然后在 5:00 点击暂停。我又等了 2 分钟,然后单击恢复,计时器在 7:00、7:01、7:02 等重新开始。如何创建有效的暂停/恢复按钮并告诉 excel 不包括经过的时间什么时候恢复计数?

    Dim NextTick As Date, t As Date
Sub StartStopWatch()
t = Time
Call StartTimer
End Sub

Sub StartTimer()
NextTick = Time + TimeValue("00:00:01")
Range("M1").Value = Format(NextTick - t - TimeValue("00:00:01"), "hh:mm:ss")
Application.OnTime NextTick, "StartTimer"

End Sub

Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=NextTick, Procedure:="StartTimer", Schedule:=False
End Sub

Sub ResetTimer()
Range("M1").ClearContents
Range("N1").ClearContents
Range("L2").ClearContents
End Sub

Sub PauseButton()

If Range("L2").Value = "" Then

    Range("L2").Value = "Paused"

    Application.OnTime EarliestTime:=NextTick, Procedure:="StartTimer", Schedule:=False

Else
    Range("L2").ClearContents
    Application.OnTime EarliestTime:=NextTick, Procedure:="StartTimer", Schedule:=True

End If

End Sub

【问题讨论】:

  • 你的Sub PauseTimer()在哪里?
  • 我在尝试中添加了一个暂停按钮。

标签: excel vba


【解决方案1】:

我是这样想的

Public blResume As Boolean
Dim NextTick As Date, t As Date
Sub StartStopWatch()
t = Time
Call StartTimer
End Sub

Sub StartTimer()
NextTick = Time + TimeValue("00:00:01")
Range("M1").Value = Format(NextTick - t - TimeValue("00:00:01"), "hh:mm:ss")
If blResume = False Then Exit Sub
Application.OnTime NextTick, "StartTimer"
End Sub
Sub Pause()
    blResume = False
End Sub
Sub myResume()
    blResume = True
    StartTimer
End Sub

【讨论】:

  • 点击开始时似乎没有运行。 blresume 在启动时是否会误读为假?有没有办法在脚本运行之前将其设置为 true 以便它运行 starttimer sub?
  • 要设置它 ture 运行 myresume。
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多