Увеличьте скорость таймера обратного отсчета

#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 или менее, иначе потребуется другой метод.