Запустите подпрограмму, когда обратный отсчет закончится - PullRequest
0 голосов
/ 14 марта 2020
Dim time As Date
Dim count As Integer

time = Now()
count = 60

time = DateAdd("s", count, time)

Do Until time < Now
DoEvents

With ActivePresentation.Slides(2).Shapes("T").TextFrame.TextRange
.Text = Format((time - Now()), "hh:mm:ss")
End With
Loop

Как добавить условие для выполнения определенной подпрограммы, которая называется SendDetails, после завершения обратного отсчета?

While time < Now
DoEvents
Wend
SendDetails

Если я использую приведенный выше код вместо

Do Until time < Now
DoEvents

Текст в Slides(2).Shapes("T") не обновляется.

Ответы [ 2 ]

1 голос
/ 14 марта 2020

While и Until являются противоположностями. Когда вы начинаете, l oop, time больше, чем Now(), но со временем Now() наверстает упущенное. Если вы читаете код как простое предложение Engli sh, это будет иметь больше смысла.
Думайте о While как о «до тех пор, пока« условие »истинно». Until означает «делай это до тех пор, пока условие не станет истинным».

Вы можете выполнить тестирование перед вводом l oop или непосредственно перед выходом.

В вашем случае

Do While time < Now()
Loop

Do
Loop Until time > Now()

- два наиболее понятных варианта. Обратите внимание на символы < и >.

0 голосов
/ 17 марта 2020

Чтобы добавить условие запуска другой подпрограммы SendDetails, просто добавьте оператор If в l oop:

Do Until time < Now
DoEvents

If time < Now() Then
SendDetails
End If

Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...