在Windows VS Mac中使用系统date和用户inputdate

我一直在运行windows和Excel 2013的PC上使用这段代码来返回一个date。

如代码所示,系统提示使用当前系统dateVS使用用户inputdate。

Function GetRegDate() As Date Dim RegToday As String RegToday = MsgBox("Are the transaction(s) of today (System time)?",vbYesNo) If RegToday = vbYes Then ' Use Current System Date GetRegDate = Date Else ' Use user-input date Dim RegYear, RegMonth, RegDay As Long RegYear = InputBox("Please enter the year of the transaction.") RegMonth = InputBox("Please enter the month of the transaction (in number).") RegDay = InputBox("Please enter the day of the transaction.") GetRegDate = RegDay & "/" & RegMonth & "/" & RegYear End If ' Some other codes End Function 

这段代码在我的电脑上一直很成功。 但是,当我的朋友在运行Excel 2011的Mac上使用它时,情况并非如此。

以2016年3月26日为例,在我的PC上,通过使用当前系统date或用户inputdate方法,值“#26/3/2016#”存储在variables“GetRegDate”中,局部variables窗口。 但正如我的朋友告诉我,当使用当前系统date时,值“##”被存储。 使用用户inputdate方法时,该行发生错误

 GetRegDate = RegDay & "/" & RegMonth & "/" & RegYear 

与运行时错误13types不匹配

我不知道为什么发生这种情况。 任何帮助表示赞赏!

这是一个已知的错误。 来自微软社区 :

这是已知的一些区域设置的错误,使用荷兰地区工作正常,但不是例如当您使用法语设置时

有一个用户通过在terminal窗口中运行这个修复它

默认写入NSGlobalDomain AppleICUDateFormatStrings -dict 1日/月/年

我希望他们尽快修复

也就是说,您不应该隐式地将date转换为GetRegDate = RegDay & "/" & RegMonth & "/" & RegYear 。 使用DateSerial来避免地区问题:

 GetRegDate = DateSerial(RegYear, RegMonth, RegDay)