Excel VBA中毫秒计时器分辨率的交叉兼容性

时间:2011-08-30 16:26:45

标签: vba excel-2007 macos excel-2011

我想在Excel VBA项目中获得小数计时器分辨率,该项目必须与Windows Excel 2007和Mac OS Excel 2011兼容。我在Windows中使用来自kernel32.dll的{​​{3}}找到了一种方法Mac OS上使用sleep的方法。

我目前对Mac的访问权限有限,所以我现在无法直接测试。如果我这样声明Sleep

Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

在Mac中打开文件时是否会出错?或者只有当/在Mac中调用Sleep时才会标记错误?

2 个答案:

答案 0 :(得分:1)

我相信你需要使用条件编译来避免你的API声明在Mac上造成错误。

   #If Mac Then
      MsgBox "I'm a Mac"
   #Else
      MsgBox "I'm a PC"
   #End If

答案 1 :(得分:1)

我有一台使用Office 2011的Mac,并且可以确认当子调用sleep <{1}}

时会出现错误

如果您有其他方法可以在Mac中使用File not found: kernel32命令,请分享并使用以下逻辑选择Mac或Windows:

sleep

您还可以使用此代码设置最多7位小数的​​计时器,适用于Mac和Windows:

Public Sub WINorMAC()
'Test for the operating system.
    If Not Application.OperatingSystem Like "*Mac*" Then
        'Is Windows.
        Call Windows_specific_function()
    Else
        'Is a Mac and will test if running Excel 2011 or higher.
        If Val(Application.Version) > 14 Then
            Call Mac_specific_function()
        End If
    End If
End Sub