Есть ли эквивалент Thread.Sleep() в VBA
37 Johnno Nolan [2009-01-22 17:32:00]
Есть ли эквивалент Thread.Sleep() в Access VBA?
vba access-vba sleep
8 ответов
56 Решение Otávio Décio [2009-01-22 17:36:00]
Declare Sub Sleep Lib "kernel32" Alias "Sleep" _
(ByVal dwMilliseconds As Long)
Используйте следующий синтаксис для вызова функции "Сон":
Sub Sleep()
Sleep 1000 'Implements a 1 second delay
End Sub
7 DontFretBrett [2011-10-18 02:27:00]
Другой способ без использования kernel32:
Dim started As Single: started = Timer
Do: DoEvents: Loop Until Timer - started >= 1
6 Zorba Eisenhower [2010-11-10 17:44:00]
Для того, чтобы код работал, требуется несколько поправок. Код ниже - исправленная версия.
Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
Sub SleepVBA()
Sleep 1000 'Implements a 1 second delay
End Sub
5 The Data Brewer [2014-01-16 21:59:00]
Все остальные методы, чтобы заставить Excel ждать результата в Excel, становятся полностью невосприимчивыми. Решение для ожидания Excel при обеспечении гибкого пользовательского интерфейса - это ожидание Sub с количеством секунд ожидания.
Sub Wait(seconds As Integer)
Dim now As Long
now = Timer()
Do
DoEvents
Loop While (Timer < now + seconds)
End Sub
2 user3298002 [2014-02-11 19:16:00]
Можно использовать процедуру Excel Wait() из Access VBA.
Первый шаг - убедиться, что на библиотеку Excel ссылаются ваши проекты.
Когда это будет сделано, следующий код будет работать в ожидании десяти секунд:
Call Excel.Application.Wait(Time:=DateAdd("s",10,Now()))
2 Gaffi [2012-03-01 20:15:00]
Я использую это в Excel, и он отлично работает:
Application.Wait DateAdd("s", 1, Now())
DateAdd() - это функция, которая устанавливает время относительно Now() (в этом случае - вы можете использовать другие значения в качестве вашего аргумента), "s" - это мера времени (в данном случае секунд), а increment равно 1. Таким образом, вызов функции сообщает приложению, чтобы он подождал 1 секунду.
См. также для более подробной информации об использовании функции DateAdd.
1 Tony L. [2016-12-01 19:18:00]
1 sebastien leblanc [2011-10-20 20:57:00]
Добавление
Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
каким-то образом возникли дополнительные проблемы где-то еще в моем коде. Я закончил использовать эту функцию, которую я нашел на другом форуме, и немного поддразнивал:
Function WaitTime(n As Double)
'Function that wait an amount of time n in seconds
TWait = Time
TWait = DateAdd("s", n, TWait)
Do Until TNow >= TWait
TNow = Time
Loop
End Function
надеюсь, что это поможет:)
