types与CDate不匹配

我有以下代码:

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

但是我得到了“types不匹配错误”。 Table.Cell(i, 4)是一个“dd.mm.yy”格式。

我写了一个macros来testing这个和date格式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 

所以,要解决您的问题,您只需要将date中的所有时段replace为连字符或斜线:

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

尝试

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

date转换performance取决于区域和语言中的date格式设置。
以下function可确保转换成功:

 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