尝试将格式如下的单元格转换为日期时,我收到错误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)))
我一直以不同方式对它们进行格式化,以获得我可以在我的代码中使用的日期。 但我找不到任何有用的东西。
感谢您的帮助
答案 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))