У меня есть Секундомер VBA в моей таблице Excel, код:Vba Секундомер unintendently сбрасывается назад 0 при изменении других клеток
Public StopIt As Boolean
Public ResetIt As Boolean
Public LastTime
Private Sub CommandButton1_Click()
Dim StartTime, FinishTime, TotalTime, PauseTime
StopIt = False
ResetIt = False
If Range("C2") = 0 Then
StartTime = Timer
PauseTime = 0
LastTime = 0
Else
StartTime = 0
PauseTime = Timer
End If
StartIt:
DoEvents
If StopIt = True Then
LastTime = TotalTime
Exit Sub
Else
FinishTime = Timer
TotalTime = FinishTime - StartTime + LastTime - PauseTime
TTime = TotalTime * 100
HM = TTime Mod 100
TTime = TTime \ 100
hh = TTime \ 3600
TTime = TTime Mod 3600
MM = TTime \ 60
SS = TTime Mod 60
Range("C2").Value = Format(hh, "00") & ":" & Format(MM, "00") & ":" & Format(SS, "00") & "." & Format(HM, "00")
If ResetIt = True Then
Range("C2") = Format(0, "00") & ":" & Format(0, "00") & ":" & Format(0, "00") & "." & Format(0, "00")
LastTime = 0
PauseTime = 0
End
End If
GoTo StartIt
End If
End Sub
Private Sub CommandButton2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
StopIt = True
End Sub
Private Sub CommandButton3_Click()
Range("C2").Value = Format(0, "00") & ":" & Format(0, "00") & ":" & Format(0, "00") & "." & Format(0, "00")
LastTime = 0
ResetIt = True
End Sub
Этот секундомер работает правильно. Моя проблема в том, что когда я меняю ячейку в своей таблице или вношу какие-либо изменения, она сбрасывает секундомер на «0».
Я хочу, чтобы он запускался на протяжении всей моей сессии, поскольку у меня есть другие ячейки, которые относятся к этому счетчику.
Любая помощь была бы принята с благодарностью. Я не мог найти подобных проблем при поиске решения.
Благодаря
Какое значение сбрасывается до 0? У вас есть код в обработчике событий Worksheet_Change? – Comintern
Что вы хотите, если этот код вызывается во второй раз, а секундомер в данный момент активен? Вы хотите разрешить запуск нескольких секундомеров? Я предполагаю, что, как минимум, вам нужен флаг, чтобы указать «HeyImActive». –
@ WayneG.Dunn - Да, только что заметил. Если щелкнуть CommandButton1, когда он «работает», он перезапускается с последнего раза, когда он был остановлен. – Comintern