键入与CDate不匹配

时间:2013-12-27 19:25:29

标签: excel vba ms-word type-mismatch

我有以下代码:

minDate = CDate(Table.Cell(i, 4).Range.Text)

但我收到“类型不匹配错误”。 Table.Cell(i, 4)采用“dd.mm.yy”格式。

3 个答案:

答案 0 :(得分:4)

我写了一个宏来测试这个并且日期格式dd.mm.yyyy无效,似乎你必须使用dd/mm/yyyy(使用斜杠而不是句点)或dd-mm-yyyy(使用连字符代替周期):

Sub Macro1()

    Dim minDate As Date
    Dim DateStr As String

    ' with slashes, ok
    DateStr = "27/12/2013"
    minDate = CDate(DateStr)

    ' replace periods w/ slashes, ok
    DateStr = "27.12.2013"
    minDate = CDate(Replace(DateStr, ".", "/"))

    ' replace periods w/ hyphens, ok
    DateStr = "27.12.2013"
    minDate = CDate(Replace(DateStr, ".", "-"))

    ' type mismatch
    DateStr = "27.12.2013"
    minDate = CDate(DateStr)

End Sub

因此,要解决您的问题,您只需将日期中的所有句点替换为连字符或斜杠:

minDate = CDate(Replace(Table.Cell(i, 4).Range.Text, ".", "/"))

答案 1 :(得分:0)

尝试

minDate = CDate(Table.Cell(i, 4))

答案 2 :(得分:0)

日期转换效果取决于区域和语言中的日期格式设置 以下功能可确保成功转换:

Function TextToDate(vstrText) As Variant
' Description: Convert Text Date to Date
'--
    Dim d As Variant
    Dim sDate As String
    sDate = Replace(vstrText, ".", "-")
    If Right(sDate, 1) = "-" Then
        sDate = Left(sDate, Len(sDate) - 1)
    End If
    If IsDate(sDate) Then
        d = CDate(sDate)
    Else
        d = ""
    End If
    TextToDate = d
End Function