【问题标题】:Sleep Equivalent for mac in Excel VBAExcel VBA中mac的睡眠等效项
【发布时间】:2021-09-12 13:41:49
【问题描述】:

我想在 Excel 的 macOS VBA 编辑器中添加一个 500 毫秒的等待块。我知道

Application.Wait (Now + TimeValue("0:00:01"))

有效,但这不能低于 1 秒。我也试过 sleep 命令:

Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
...
Sleep 500 

但这给了我一个错误提示

File Not Found "kernel32" 

有什么方法可以做到这一点?

【问题讨论】:

标签: excel vba macos


【解决方案1】:

这适用于 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

【讨论】:

    【解决方案2】:

    您上面的代码块只需添加一点点即可工作。只需将 TimeValue 除以 2 即可得到 500 毫秒

    Application.Wait (Now + TimeValue("0:00:01") / 2)
    

    【讨论】:

      猜你喜欢
      • 2012-03-31
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 2010-10-29
      • 2013-03-28
      相关资源
      最近更新 更多