Excel VBA中毫秒计时器分辨率的交叉兼容性
我想在Excel VBA项目中获得分数计时器分辨率,该项目必须与Windows Excel 2007和Mac OS Excel 2011兼容。我在windows中发现了一种使用fromExcel 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中打开文件时
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重新分发-我原以为有一些“内置”条件编译