我一直在运行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类型不匹配
我不知道为什么会这样。任何帮助表示赞赏!
答案 0 :(得分:2)
这是一个已知的错误。来自Microsoft Communities:
这是一些区域设置的已知错误,工作正常时 您使用荷兰语区域但不是例如使用法语时 设置
让一个用户通过在终端窗口中运行它来修复它
默认写入NSGlobalDomain AppleICUDateFormatStrings -dict 1 DD / MM / YY
我希望他们能尽快解决这个问题
那就是说,你不应该隐含地使用GetRegDate = RegDay & "/" & RegMonth & "/" & RegYear
投射到一个日期。使用DateSerial
来避免区域问题:
GetRegDate = DateSerial(RegYear, RegMonth, RegDay)