Я хотел бы начать обратный отсчет из работающего кода. Проблема в том, что я заявляюобратный отсчет в пользовательской форме vba, вызванный функцией
> TimerForm.Show
Тогда отображается форма пользователя, однако обратный отсчет не запускается. Как можно вызвать обратный отсчет просто из функции, где отсчет показан в пользовательском виде TimerLabel, как показано ниже
TimerForm.TimerLabel.Caption = Format(TimeSerial(0, 0, nTime), "hh:mm:ss") & " seconds "
Ntime будет затем снизился с начальным значением 30 секунд.
Ответ Ниже полностью решается проблема. Кнопка отмены для таймера должна быть
Private Sub CancelTimer_Click()
Application.OnTime EarliestTime:=earliest, _
Procedure:=handler, _
schedule:=False
Unload Me
End
End Sub
Если не Application.OnTime продолжает работать в фоновом режиме.
Благодаря @dee - я не очень понимаю понятие'vbModeless' –
В коде TimerForm я просмотрел кнопку отмены с помощью «Private Sub CancelTimer_Click()» Содержимое должно быть простым: «Разгрузить Me Конец». Однако, если я использую это, программа имеет очень странное поведение - код начинает переключать между пользовательским кодом и объектом userform ... –
Поскольку я не был уверен, что вам нужно, я добавил эту «немодальную» возможность. Точка безмодельной User-Form заключается в том, что после отображения формы может быть вызвана какая-то публичная функция User-Form. но вы можете игнорировать его, это не имеет отношения к делу. – dee