我正在尝试转换数字 - >指定的日期格式。这只在一列(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答案 0 :(得分:2)
您收到该错误,因为该单元格具有负值或格式为日期的非常大的值。您可能希望查看########
的说明参见此示例
测试代码
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
答案 1 :(得分:0)
您说您的代码首先将数字复制到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+C
和CTRL+V
)格式化为Excel的数字,您会注意到Excel会自动将这些值转换为Date
个对象。< / p>
您可以通过将代码的副本留在其执行的不同位置来测试这一点。