【问题标题】:I am getting the overflow error while trying to change a number into a date尝试将数字更改为日期时出现溢出错误
【发布时间】:2014-09-10 18:03:33
【问题描述】:

我正在尝试转换数字 -> 指定的日期格式。这仅在一列(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

【问题讨论】:

  • 您是否验证了单元格值可以在没有任何错误检查的情况下进行转换?也许您正在尝试转换无法转换的东西...
  • 好的,所以这是一个更新的问题 - 当我复制粘贴数据时,粘贴列中的数据以某种方式将其格式更改为类似于 ########,当它应该就像 20140908,因此代码无法转换值......在这种情况下应该怎么做?
  • 如果是数字#######表示它是一个-ve值
  • @SiddharthRout 很抱歉很密集,但什么是 -ve 值?

标签: vba date excel


【解决方案1】:

您收到该错误是因为单元格具有负值或格式化为日期的非常大的值。你可能想看看########的解释

看这个例子

测试代码

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

【讨论】:

  • 好的,所以我删除了该列,然后放置了一个新列(即在粘贴数据的工作表中) - 现在它可以工作了(我已经检查了多次)。虽然,您的这个答案对将来的参考非常有用!
【解决方案2】:

您说您的代码首先将数字复制到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 对象。

您可以通过在执行过程中的不同点留下代码工作的副本来测试这一点。

【讨论】:

  • 我试过了 - 删除了除了复制部分的所有代码,excel在粘贴时不会自动转换数据...
猜你喜欢
  • 2020-04-10
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-25
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
相关资源
最近更新 更多