Excel 运行时错误13:使用DateSerial的日期类型不匹配
尝试将格式如下的单元格转换为日期时出现错误13: 2017-09-06 00:00:00.0 我已经对它们进行了不同的格式化,以获得一个可以在代码中使用的日期。 但是我找不到任何有用的东西Excel 运行时错误13:使用DateSerial的日期类型不匹配,excel,vba,Excel,Vba,尝试将格式如下的单元格转换为日期时出现错误13: 2017-09-06 00:00:00.0 我已经对它们进行了不同的格式化,以获得一个可以在代码中使用的日期。 但是我找不到任何有用的东西 感谢您的帮助对我来说效果很好,可能您没有参考正确的活动表,可能这就是问题的原因 试着写下: 2017-09-06 00:00:00.0 在新创建的excel工作表的范围A1中,运行以下操作: Public Sub TestMe2() Dim d As Date Dim m
感谢您的帮助对我来说效果很好,可能您没有参考正确的活动表,可能这就是问题的原因 试着写下: 2017-09-06 00:00:00.0 在新创建的excel工作表的范围
A1
中,运行以下操作:
Public Sub TestMe2()
Dim d As Date
Dim mycell As Range
Set mycell = Worksheets(1).Range("A1")
d = DateSerial(CInt(Left(mycell, 4)), _
CInt(Mid(mycell.Value, 6, 2)), _
CInt(Mid(mycell.Value, 9, 2)))
Debug.Print d
End Sub
如果您确保始终参考工作表(如上面的代码所示,将
mycell
设置为Worksheets(1)
),您将避免很多麻烦。对我来说效果很好,可能您没有参考正确的活动工作表,可能这就是问题的原因
试着写下:
2017-09-06 00:00:00.0
在新创建的excel工作表的范围A1
中,运行以下操作:
Public Sub TestMe2()
Dim d As Date
Dim mycell As Range
Set mycell = Worksheets(1).Range("A1")
d = DateSerial(CInt(Left(mycell, 4)), _
CInt(Mid(mycell.Value, 6, 2)), _
CInt(Mid(mycell.Value, 9, 2)))
Debug.Print d
End Sub
如果您确保始终参考工作表(如上面的代码所示,将
mycell
设置为Worksheets(1)
),您将避免很多麻烦。我刚刚测试了这一点,并按照您的要求进行了操作,其中Sheet1.cells(1,1).值保存您的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
我刚刚测试了这一点,并按照您的要求进行了操作,其中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
这取决于您在单元格中持有的格式,让我们使用
Range(“A1”)
案例1:以日期和时间格式保存,然后执行以下代码:
d = CDate(Range("A1").Value)
案例2:它是纯文本,您可以使用Instr
查找日期和时间之间的空格,然后将其转换为日期
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))
这取决于您在单元格中持有的格式,让我们使用
Range(“A1”)
案例1:以日期和时间格式保存,然后执行以下代码:
d = CDate(Range("A1").Value)
案例2:它是纯文本,您可以使用Instr
查找日期和时间之间的空格,然后将其转换为日期
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))
实际上我引用了错误的列,我看了很多次,但仍然放错了列。。。谢谢你让我再考虑一下!实际上我引用了错误的列,我看了很多次,但仍然放错了列。。。谢谢你让我再考虑一下!我将使用此代码简化我的代码,但实际上我的cells调用中的列是错误的。。非常感谢你的帮助和时间!我将使用此代码简化我的代码,但实际上我的cells调用中的列是错误的。。非常感谢你的帮助和时间!