Поскольку вы не предоставили ни одного примера того, как вы хотите, чтобы он выглядел, или как выполнялось текущее отслеживание, я просто сделал какой-то трекер времени, отслеживающий секунды.
Так что я сделал таймер таким образом:
Добавьте кнопку, и 00:00:00 в качестве времени в ячейке, где вы хотите отслеживать время.
В моем случае это ячейка C2
, я называю это timerPos
.
Затем я использую ячейку A1
или любую другую запасную ячейку, чтобы отслеживать время, и если я записываю, я называю это trackerPos
.
Затем, когда я нажимаю на мою кнопку, это будет выглядеть так:
Когда я закончу следить за временем, я снова нажимаю кнопку. Трекер очищается, а таймер обновляется:
Теперь самая важная часть; код для кнопки.
Sub timer()
Dim timeL As Long, timerPos As Range, trackerPos As Range
Set timerPos = Range("C2")
Set trackerPos = Range("A1")
If trackerPos.Value = "" Then
trackerPos.Value = Now
Else
timeL = Abs(Now - trackerPos.Value) * 86400
timerPos.Value = DateAdd("s", timeL, timerPos.Value)
timerPos.NumberFormat = "[h]:mm:ss"
trackerPos.Value = ""
End If
End Sub
Использование: Переменные timerPos
и trackerPos
могут быть легко изменены в соответствии с вашими потребностями того, где вы хотите хранить таймер.
Первая строка части Else
преобразует разницу во времени между текущим временем и временем в трекере.
Вторая строка добавляет время к таймеру. В третьей строке форматирование не отображается, если даты превышают 24 часа.
редактировать
Если мы хотим ограничить время записи каждой записи до 8 часов, нам нужно всего лишь добавить небольшой If
.
8 часов - 28800 секунд, поэтому мы проверяем, больше ли timeL, чем это число, и, если так, устанавливаем его на это число.
timeL = Abs(Now - trackerPos.Value) * 86400
If timeL > 28800 Then
timeL = 28800
End If
timerPos.Value = DateAdd("s", timeL, timerPos.Value)
Пока мы работаем над этим, я добавил некоторые изменения цвета и текста для кнопки, чтобы помочь визуально помочь таймеру.
Sub timer()
Dim timeL As Long, timerPos As Range, trackerPos As Range, button As Variant
Set button = ActiveSheet.Buttons("Button 1") 'Make sure this is the right button
Set timerPos = Range("C2")
Set trackerPos = Range("A1")
If trackerPos.Value = "" Then
trackerPos.Value = Now
button.Characters.Text = "Stop timer"
button.Font.ColorIndex = 3
Else
timeL = Abs(Now - trackerPos.Value) * 86400
If timeL > 28800 Then
timeL = 28800
End If
timerPos.Value = DateAdd("s", timeL, timerPos.Value)
timerPos.NumberFormat = "[h]:mm:ss"
trackerPos.Value = ""
button.Text = "Start timer"
button.Font.ColorIndex = 50
End If
End Sub