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

Excel VBA中毫秒计时器分辨率的交叉兼容性,vba,excel-2007,macos,excel-2011,Vba,Excel 2007,Macos,Excel 2011,我想在Excel VBA项目中获得分数计时器分辨率,该项目必须与Windows Excel 2007和Mac OS Excel 2011兼容。我在windows中发现了一种使用fromkernel32.dll的方法,在Mac OS上发现了一种使用 我目前只能访问Mac电脑,所以我现在无法直接测试。如果我这样声明Sleep: Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) 在Mac中打开文件时

我想在Excel VBA项目中获得分数计时器分辨率,该项目必须与Windows Excel 2007和Mac OS Excel 2011兼容。我在windows中发现了一种使用from
kernel32.dll
的方法,在Mac OS上发现了一种使用

我目前只能访问Mac电脑,所以我现在无法直接测试。如果我这样声明
Sleep

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

在Mac中打开文件时是否会引发错误?或者只有在Mac中调用睡眠时才会标记错误?

我认为您需要使用条件编译,以避免API声明在Mac上导致错误

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

我相信您需要使用条件编译来避免API声明在Mac上导致错误

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

我有一台使用Office 2011的Mac电脑,可以确认当子系统调用
sleep
时会出现错误,并且
文件未找到:kernel32

如果您有其他方法在Mac中使用
sleep
命令,请共享并使用以下逻辑选择Mac或Windows:

Public Sub-WINorMAC()
'针对操作系统的测试。
如果不是像“*Mac*”这样的Application.OperatingSystem,则
“是窗户。
调用特定于Windows的函数()
其他的
'是Mac,将测试是否运行Excel 2011或更高版本。
如果Val(Application.Version)>14,则
调用Mac_特定函数()
如果结束
如果结束
端接头
您还可以使用此代码设置一个最多为7位小数的计时器,该计时器适用于Mac和Windows:

”------计时器宏--------”
'目的:确定代码完全运行所需的秒数
来源:www.TheSpreadsheetGuru.com/the-code-vault
暗淡的开始时间是双倍的
模糊的二次选择为双色
黯淡的一分钟以双倍的速度过去
'还记得宏启动的时间吗
开始时间=计时器
'*************************************
'----开始运行代码-----'
'*************************************
你的密码在这里
'*************************************
“------------结束代码----------------”
'*************************************
'确定代码运行所需的秒数
'如果您想在秒内输入两位小数,请使用此行:
'SecondsElapsed=Round(计时器-开始时间,2)
'如果您希望最多使用7位小数,请使用此行:
SecondsElapsed=计时器-开始时间
'通知用户宏使用了多长时间
如果SecondsElapsed>60,则
分钟已用=整数(秒已用/60)
SecondsElapsed=Int(SecondsElapsed-(分钟经过*60))
Msgbox“此代码在”&minuteseapped&“minutes”和“&SecondsElapsed&“seconds”中成功运行”,vbInformation
其他的
Msgbox“此代码在”&SecondsElapsed&“秒”内成功运行”,vbInformation
如果结束

我有一台使用Office 2011的Mac电脑,可以确认当子系统调用
sleep
文件未找到时会引发错误:kernel32

如果您有其他方法在Mac中使用
sleep
命令,请共享并使用以下逻辑选择Mac或Windows:

Public Sub-WINorMAC()
'针对操作系统的测试。
如果不是像“*Mac*”这样的Application.OperatingSystem,则
“是窗户。
调用特定于Windows的函数()
其他的
'是Mac,将测试是否运行Excel 2011或更高版本。
如果Val(Application.Version)>14,则
调用Mac_特定函数()
如果结束
如果结束
端接头
您还可以使用此代码设置一个最多为7位小数的计时器,该计时器适用于Mac和Windows:

”------计时器宏--------”
'目的:确定代码完全运行所需的秒数
来源:www.TheSpreadsheetGuru.com/the-code-vault
暗淡的开始时间是双倍的
模糊的二次选择为双色
黯淡的一分钟以双倍的速度过去
'还记得宏启动的时间吗
开始时间=计时器
'*************************************
'----开始运行代码-----'
'*************************************
你的密码在这里
'*************************************
“------------结束代码----------------”
'*************************************
'确定代码运行所需的秒数
'如果您想在秒内输入两位小数,请使用此行:
'SecondsElapsed=Round(计时器-开始时间,2)
'如果您希望最多使用7位小数,请使用此行:
SecondsElapsed=计时器-开始时间
'通知用户宏使用了多长时间
如果SecondsElapsed>60,则
分钟已用=整数(秒已用/60)
SecondsElapsed=Int(SecondsElapsed-(分钟经过*60))
Msgbox“此代码在”&minuteseapped&“minutes”和“&SecondsElapsed&“seconds”中成功运行”,vbInformation
其他的
Msgbox“此代码在”&SecondsElapsed&“秒”内成功运行”,vbInformation
如果结束

我以前看过这段代码。。。
Mac
是条件编译“代码”中可以识别的东西吗?对于我来说,只向Mac用户分发项目的第二个版本是不可行的,因此我不能使用
#CONST Mac=True
然后手动更改它并使用
#CONST Mac=False
@Hari重新分发-我原以为有一些“内置”条件编译常量,但情况似乎并非如此。我确实测试了我的代码(没有声明“Mac”常量),它似乎可以工作,但现在我发现即使使用未声明的常量,它也不会出错-它只是给它一个默认值False。@Tim。。。谢谢你的努力!这就是我需要知道的。我以前看过这个代码。。。
Mac
是条件编译“代码”中可以识别的东西吗?对于我来说,只向Mac用户分发项目的第二个版本是不可行的,因此我不能使用
#CONST Mac=True
然后手动更改它并使用
#CONST Mac=False
@Hari重新分发-我原以为有一些“内置”条件编译