Эквивалент сна для Mac в Excel VBA
Я хочу добавить блок ожидания на 500 миллисекунд в редакторе macOS VBA для Excel. Я знаю
Application.Wait (Now + TimeValue("0:00:01"))
Работает, но не может быть меньше 1 секунды. Я тоже пробовал команду сна:
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
...
Sleep 500
Но это дает мне ошибку, говоря
File Not Found "kernel32"
Любой способ добиться этого?
2 ответа
Это будет работать как на Windows, так и на Mac:
Option Explicit
#If Mac Then
#If VBA7 Then
Public Declare PtrSafe Sub USleep Lib "/usr/lib/libc.dylib" Alias "usleep" (ByVal dwMicroseconds As Long)
#Else
Public Declare Sub USleep Lib "/usr/lib/libc.dylib" Alias "usleep" (ByVal dwMicroseconds As Long)
#End If
#Else 'Windows
#If VBA7 Then
Private Declare PtrSafe Sub MSleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
#Else
Private Declare Sub MSleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
#End If
#End If
Public Sub Sleep(ByVal dwMilliseconds As Long)
#If Mac Then
USleep dwMilliseconds * 1000&
#Else
MSleep dwMilliseconds
#End If
End Sub
Ваш блок кода выше будет работать с одним небольшим дополнением. Просто разделите TimeValue на 2, чтобы получить 500 мс.
Application.Wait (Now + TimeValue("0:00:01") / 2)