【问题标题】:Overflow Error #6 VBA while using long data type使用长数据类型时溢出错误 #6 VBA
【发布时间】:2018-05-31 15:53:31
【问题描述】:

来自 Python 的 VBA 的新手,因此不再有区别。

Sub Average_Income()

    Dim data As Worksheet
    Dim avg As Worksheet
    Dim i As Long
    Dim Total As Long
    Dim Bottom As Long
    Dim Low As Long
    Dim Mid As Long
    Dim Mid_High As Long
    Dim High As Long
    Dim Top As Long
    Dim Number As Long


    Set data = ActiveWorkbook.Sheets("Data")
    Set avg = ActiveWorkbook.Sheets("Averages")

    Total = CLng(7)
    Bottom = CLng(8)
    Low = CLng(9)
    Mid = CLng(10)
    Mid_High = CLng(11)
    High = CLng(12)
    Top = CLng(13)

    For i = 2 To 1000
        Number = avg.Cells(i, 2)
        CLng(Number) = CLng(data.Cells(Total, 19).Value) / CLng(data.Cells(Total, 18).Value)
        Total = Total + 8
    Next i
End Sub

我觉得我已经尝试了一切!怎么回事?

【问题讨论】:

  • 您不应该在 = 运算符的左侧使用 CLng。哪一行导致错误,发生错误时相关的单元格值是什么?
  • 这可能/可能不是问题,是否可以将一个变量设置为 Double,因为小数点,可以解决?
  • 如果 data.Cells(Total, 18).Value 包含零 (0),您将始终收到溢出错误。
  • 错误发生在 CLng(Number) = CLng(data.Cells(Total, 19).Value) / CLng(data.Cells(Total, 18).Value)
  • @SkyMaster 不正确,仅当CLng(data.Cells(Total, 19).Value) 也为 0 时。仅当CLng(data.Cells(Total, 18).Value) 等于 0 时会出现除以 0 的错误。

标签: vba excel integer-overflow


【解决方案1】:

溢出是分区 0 / 0 中的错误。

其他除以 0 生成运行时错误 11:除以零。

Sub test()
    Debug.Print 0 / 0
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多