Как сделать паузу на определенное количество времени? (Excel / VBA) - PullRequest
96 голосов
/ 09 октября 2009

У меня есть лист Excel, в котором есть следующий макрос. Я хотел бы повторять это каждую секунду, но опасно, если я смогу найти функцию для этого. Разве это не возможно?

Sub Macro1()
'
' Macro1 Macro
'
Do
    Calculate
    'Here I want to wait for one second

Loop
End Sub

Ответы [ 14 ]

1 голос
/ 12 июня 2019

Функции ожидания и сна блокируют Excel, и вы не можете больше ничего делать, пока не закончится задержка. С другой стороны, задержки цикла не дают вам точного времени ожидания.

Итак, я сделал этот обходной путь, объединив немного обе концепции. Он зацикливается, пока не наступит нужное время.

Private Sub Waste10Sec()
   target = (Now + TimeValue("0:00:10"))
   Do
       DoEvents 'keeps excel running other stuff
   Loop Until Now >= target
End Sub

Вам просто нужно позвонить в Waste10Sec, где вам нужна задержка

1 голос
/ 03 июля 2016

Я обычно использую функцию Таймер , чтобы приостановить приложение. Вставьте этот код в ваш

T0 = Timer
Do
    Delay = Timer - T0
Loop Until Delay >= 1 'Change this value to pause time for a certain amount of seconds
1 голос
/ 13 декабря 2014

я сделал это, чтобы ответить на проблему:

Sub goTIMER(NumOfSeconds As Long) 'in (seconds) as:  call gotimer (1)  'seconds
  Application.Wait now + NumOfSeconds / 86400#
  'Application.Wait (Now + TimeValue("0:00:05"))  'other
  Application.EnableEvents = True       'EVENTS
End Sub
0 голосов
/ 26 августа 2013

Попробуйте это:

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