我有以下代码:
minDate = CDate(Table.Cell(i, 4).Range.Text)
但我收到“类型不匹配错误”。
Table.Cell(i, 4)
采用“dd.mm.yy”格式。
答案 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