Я пишу кусок кода VBA для отображения таймера обратного отсчета. В Excel Sheet 1 перечислены времена и описания событий, а на листе 2 отображается обратный отсчет.
Идея состоит в том, что после первого обратного отсчета первого события проверяется дата второго события, а если это сегодня, продолжается обратный отсчет до второго события и так далее. Аспект обратного отсчета успешно работает в первый раз и в описании, но когда он завершает обратный отсчет до первого события, он полностью останавливается.
Есть 3 подпрограммы, первая работает, если событие сегодня и как долго нужно отсчитывать время. Первый вызывает второй, который выполняет обратный отсчет, вычитая TimeSerial(0,0,1)
, а третий - таймер. Я признаю, что я позаимствовал 2-е и 3-е у хорошо написанного произведения, которое я нашел в Интернете (спасибо тому, кто это написал, спасибо).
Я упростил то, что написал ниже:
For i=1 to 10
If *Conditions to determine if countdown should happen exist*
*calculate time to countdown and sets it to sheets("Countdown").Cells("A13")*
Cells(13, 1) = TotaltimeCountdown
Call Countdowntimer
End if
Next i
Sub Countdowntimer()
Sheets("Countdown").Activate
Dim Counter As Range
Set Counter = ActiveSheet.Range("A13")
If Counter.Value > 0 Then
Counter.Value = Counter.Value - TimeSerial(0, 0, 1)
Call Timer
ElseIf Counter.Value <= 0 Then
Sheets("Countdown").Range("A13:H17").ClearContents
Exit Sub
End If
End Sub
'Sub to trigger the reset of the countdown timer every second
Sub Timer()
Dim gCount As Date
gCount = Now + TimeValue("00:00:01")
Application.OnTime gCount, "Countdowntimer"
End Sub
Я поместил окно сообщения после вызова Countdowntimer в первом сабвуфере и смог установить sh, что он отображает количество времени для обратного отсчета, затем отобразил окно сообщения и прокрутил каждое значение i
. Только тогда он действительно начал обратный отсчет.
Любые предложения о том, как заставить паузу для l oop полностью остановиться, пока не закончится обратный отсчет от вызываемого субмарина?
Любые предложения приветствуются