首页 > 解决方案 > Excel VBA秒表在午夜中断

问题描述

我有一个工作表,用于跟踪录制有声读物的进度(我是旁白)。在每张纸上,我都有一个计时器,我用它来跟踪我每天/会话记录了多少小时。

如果计时器在午夜运行,它会将计时器设置为 20:00:00 并继续运行。我经常在午夜录制,所以如果我不记得在午夜之前停止计时器并在之后重新启动,这是一个主要问题。

这是整个 Excel 文件的链接。您可以在 TEMPLATE 工作表中找到计时器。计时器的宏在 Module1 中。

http://recording-tracker.narratedby.me

这是所有代码:

    Option Explicit

Dim NextTick As Date, t As Date, PreviousTimerValue As Date, strSheetName As String, lRowTime As Long, lRowDate As Date, CurrentTimerValue As Date, StartTimerValue As Date


Sub StartTime()
strSheetName = ActiveSheet.Name

StartTimerValue = PreviousTimerValue
CurrentTimerValue = PreviousTimerValue
t = Time
Call ExcelstrSheetName
End Sub

Private Sub ExcelstrSheetName()

strSheetName = ActiveSheet.Name

ThisWorkbook.Worksheets(strSheetName).Range("Q1").Value = Format(Time - t + PreviousTimerValue, "hh:mm:ss")

NextTick = Now + TimeValue("00:00:01")

Application.OnTime NextTick, "ExcelstrSheetName"

End Sub

Sub StopClock()

strSheetName = ActiveSheet.Name

On Error Resume Next

Application.OnTime earliesttime:=NextTick, procedure:="ExcelstrSheetName", schedule:=False

CurrentTimerValue = ThisWorkbook.Worksheets(strSheetName).Range("Q1").Value

End Sub

Sub Reset()

strSheetName = ActiveSheet.Name

CurrentTimerValue = ThisWorkbook.Worksheets(strSheetName).Range("Q1").Value
On Error Resume Next

Application.OnTime earliesttime:=NextTick, procedure:="ExcelstrSheetName", schedule:=False

ThisWorkbook.Worksheets(strSheetName).Range("Q1").Value = 0

End Sub

单元格 Q1 是在任何给定时间保存计时器值的单元格。

我已经删除了与我的问题无关的其他 Subs 和这些 Subs 的部分。这是基本的秒表功能。

任何帮助深表感谢!

标签: excelvbatimerstopwatch

解决方案


推荐阅读