繁体   English   中英

尝试将数字更改为日期时出现溢出错误

[英]I am getting the overflow error while trying to change a number into a date

我正在尝试转换数字->指定的日期格式。 此操作仅在一列(D列)上完成。 这是代码-

'Changing date format (for UPLOADDATE column)
Application.ScreenUpdating = False
For Each c In Range("D2:D" & Cells(Rows.Count, "D").End(xlUp).row)
    c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
    c.NumberFormat = "mm/dd/yyyy"
Next
Application.ScreenUpdating = False

现在,只要我的代码到达这一点,它就会中断,并显示以下错误:-

运行时错误“ 6”:溢出

总的来说,我的代码所做的是将数据从另一个Excel文件复制到Excel的隐藏表中(代码所在的位置)。 使用日期格式(如上面的代码中指定的)更新列,然后更新文件中的所有数据透视表。

注意-在更改列的格式之前,我确实将隐藏工作表的可见性设置为true

由于单元格具有负值或格式化为日期的非常大的值,因此出现了此错误。 您可能需要查看########的说明

看这个例子

在此处输入图片说明

测试代码

Sub Sample()
    Dim c As Range

    Set c = Range("B3")

    Debug.Print DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
End Sub

在此处输入图片说明

逐步检查代码,检查单元格C的地址是什么,然后手动检查该单元格包含的内容。

查找有问题的单元地址的一种方法是使用错误处理。 看这个例子

Sub Sample()
    Dim c As Range

    Set c = Range("B3")

    On Error GoTo Whoa

    Debug.Print DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))

    Exit Sub
Whoa:
    MsgBox "The Error Happened in " & c.Address
End Sub

您说您正在编码,首先将数字复制到ThisWorkbook ,然后尝试将其转换为Date对象? 当您要求Excel将数字复制到ThisWorkbook ,该Excel是否会自动检测其复制日期格式化为数字并将其立即转换为Date对象?

您没有提供要复制的数字格式的样本,尽管我认为我可以从传递给的值中推断出一个:

DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))

诸如“ yyyymmdd”或“ yyyy / mm / dd”之类的东西?

如果您尝试将这样格式化的数字手动(使用CTRL+CCTRL+V )粘贴到Excel中,您会注意到Excel会自动将这些值转换为Date对象。

您可以通过在执行代码的各个阶段保留代码副本来进行测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM