日期值不能读到12月份

时间:2014-12-15 17:32:59

标签: vba excel-vba excel

我处理一个操纵不同日期的宏vba。 我与Decembre有一个不太全面的错误。例如

DateValue("11-NOV-14")

返回:2014年11月11日

DateValue("11-DEC-14")

返回错误类型' 13'

我已经尝试将字符串放入var并将其传递给DateValue但结果相同。

也许我可以解决这个问题,但我想知道为什么我有这个神秘的错误。

感谢您的帮助。

1 个答案:

答案 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,并确保它将与您的输入数据一起使用,无论系统语言是什么。