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

我正在尝试转换数字 – >指定的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的隐藏表格(代码所在的位置)。 用date格式更新列(如上面的代码所指定的那样),然后更新文件中的所有数据透视表。

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

您正在获取该错误,因为该单元格具有负值或非常大的值格式化为date。 您可能想要查看########的解释

看到这个例子

在这里输入图像说明

testing代码

 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的地址,然后手动检查该单元格包含的内容。

find有问题的单元地址的一种方法是使用error handling。 看到这个例子

 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的格式为数字,并立即将数字转换为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对象。

你可以通过在代码执行过程中的不同点上保留代码的副本来进行testing。