Эквивалент сна для 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)
Другие вопросы по тегам