运行时错误13:使用DateSerial在日期上键入不匹配

时间:2017-11-24 11:13:32

标签: excel-vba vba excel

尝试将格式如下的单元格转换为日期时,我收到错误13:

  

2017-09-06 00:00:00.0

Dim d As Date
d = DateSerial(CInt(Left(Cells(i, 15).Value, 4)), CInt(Mid(Cells(i, 15).Value, 6, 2)), CInt(Mid(Cells(i, 15).Value, 9, 2)))

我一直以不同方式对它们进行格式化,以获得我可以在我的代码中使用的日期。 但我找不到任何有用的东西。

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

我刚测试了这个,并按照你的要求做了,Sheet1.cells(1,1).value保存你的2017-09-06 00:00:00.0:

Sub foo()
    Dim val As Variant
    val = Sheet1.Cells(1, 1).Value
    newdate = CDate(val)
    Sheet1.Cells(1, 2).Value = newdate
End Sub

答案 1 :(得分:2)

这取决于您在单元格中持有2017-09-06 00:00:00.0的格式,请在此示例中使用Range("A1")

案例1 :以日期和时间的格式保存,然后以下代码执行:

d = CDate(Range("A1").Value)

案例2 :它是纯文本,然后您可以使用Instr找到日期和时间之间的空格,然后将其转换为Date

Dim d As Date
Dim xPos As Long

' find the position of the space
xPos = InStr(Range("A1").Value2, " ")

d = CDate(Left(Range("A1").Value2, xPos - 1))