我处理一个操纵不同日期的宏vba。 我与Decembre有一个不太全面的错误。例如
DateValue("11-NOV-14")
返回:2014年11月11日
DateValue("11-DEC-14")
返回错误类型' 13'
我已经尝试将字符串放入var并将其传递给DateValue但结果相同。
也许我可以解决这个问题,但我想知道为什么我有这个神秘的错误。
感谢您的帮助。
答案 0 :(得分:0)
您的系统依赖性问题。十一月顺利通过,因为在法语,十一月= 11月11日,所以“11-NOV-14”等于英文版。
然而,“Décembre”是不同的,因为它在第二个字母上有重音。事实上,在法国系统上,这没关系:
a = DateValue("11-DéC-14")
虽然这不是:
a = DateValue("11-DEC-14")
要避免此问题并使代码“与语言无关”(不要求用户从控制面板更改日期格式),我认为您应该添加一个将日期从字符串转换为日期值的函数:
Function MyDateValue(ByVal myDate As String) As Date
myDay = Left(myDate,2)
myMonth = Right(Left(myDate,6),3)
Select Case myMonth
Case "JAN":
myMonth = 1
'etc.
End Select
myYear = Right(myDate,2)
MyDateValue = DateSerial(myYear,myMonth,myDay)
End Function
因此,您将能够使用myDateValue
而不是DateValue
,并确保它将与您的输入数据一起使用,无论系统语言是什么。