Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 运行时错误13:使用DateSerial的日期类型不匹配_Excel_Vba - Fatal编程技术网

Excel 运行时错误13:使用DateSerial的日期类型不匹配

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

尝试将格式如下的单元格转换为日期时出现错误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 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调用中的列是错误的。。非常感谢你的帮助和时间!