#vba #powerpoint
Вопрос:
Sub countdown()
Dim time As Date
time = Now()
time = DateAdd("s", 30, time)
Do Until time < Now()
DoEvents
oSh.TextFrame.TextRange = Format((time - Now()), "ss")
Loop
End Sub
Я могу создать 30 — секундный таймер обратного отсчета, используя приведенный выше код. Есть ли способ полностью отобразить таймер обратного отсчета за 15 секунд? Можем ли мы просмотреть все числа от 30 до 0 за 15 секунд вместо 30 секунд; т. е. показать 2 числа за 1 секунду.
Обновленный Код:
Sub countdown()
'set the range of the countdown timer
CounterStart = 400
CounterEnd = 100
Dim N1 As Single
N1 = Timer CounterStart
Do Until N1 < Timer()
DoEvents
oSh.TextFrame.TextRange = ((N1 - (Timer)) 1)
If oSh.TextFrame.TextRange = CounterEnd Then Exit Sub
Loop
End Sub
Ответ №1:
Проблема в том, что Now
это увеличивается в полных секундах, поэтому вам нужно, чтобы пользователь Timer
получал доли секунды:
Sub countdown()
Dim StopTime As Date
StopTime = DateAdd("s", 15, Now)
Do
oSh.TextFrame.TextRange = Second(CDate(2 * (StopTime - (Date Timer / 86400))))
DoEvents
Loop Until Now >= StopTime
End Sub
Комментарии:
1. Это покажет 1,2,3,…,15 за 15 секунд. Я хотел бы показать 1,2,3,…,30 за 15 секунд.
2. Это работает! Я пытался сделать обратный отсчет в 100 секунд. Вместо того, чтобы он отображался как «1:40…», мне удалось заставить его показывать «100…» с помощью обновленного кода. В таком случае, как бы мы увеличили скорость таймера обратного отсчета? Умножение на 2 не изменило интервал. Я ценю вашу помощь. Спасибо.
3.
15
это интервал.2
является фактором скорости обновления дисплея. Их количество должно составлять 60 или менее, иначе потребуется другой метод.