在Windows VS Mac中使用系统日期和用户输入日期

时间:2016-03-26 06:41:53

标签: excel excel-vba date vba

我一直在运行Windows和Excel 2013的PC上使用这段代码来返回日期。

如代码所示,系统提示使用当前系统日期VS使用用户输入日期。

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日举例来说,在我的电脑上,通过使用当前系统日期或用户输入日期方法,值"#26/3/2016#"存储在变量' GetRegDate'中,从局部变量窗口反映出来。 但正如我的朋友告诉我的那样,当使用当前的系统日期时,价值" ##"被储存了。使用用户输入日期方法时,行

处发生错误
GetRegDate = RegDay & "/" & RegMonth & "/" & RegYear

运行时错误13类型不匹配

我不知道为什么会这样。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

这是一个已知的错误。来自Microsoft Communities

  

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

     

让一个用户通过在终端窗口中运行它来修复它

     

默认写入NSGlobalDomain AppleICUDateFormatStrings -dict 1   DD / MM / YY

     

我希望他们能尽快解决这个问题

那就是说,你不应该隐含地使用GetRegDate = RegDay & "/" & RegMonth & "/" & RegYear投射到一个日期。使用DateSerial来避免区域问题:

GetRegDate = DateSerial(RegYear, RegMonth, RegDay)