【问题标题】:VBA Error 6 OverflowVBA 错误 6 溢出
【发布时间】:2016-10-28 17:44:05
【问题描述】:

我收到运行时错误 6:通过以下代码溢出。

n = (.Cells(Rows.Count, "A").End(xlUp).Row)   
FillP = Array("D", "E", "F", "H", "I", "J", "M", "O", "P", "AR", "AS", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "CB", "CC", "CD")

'fill blanks with na
For i = 2 To n
    For j = LBound(FillP) To UBound(FillP)
        If Trim(.Range(FillP(j) & i)) = "" Then
            .Range(FillP(j) & i) = "na"
        End If
    Next j
Next i

我有 Excel 2010,我还没有声明任何上述变量(将在测试后声明)。只是试图用“na”填充特定列中的空白。几乎相同的代码出现在我的 sub 中,但它运行良好。不知道我哪里出错了。

提前感谢您的帮助!

【问题讨论】:

  • 试一试,恐怕没什么区别。如果有帮助 n = 2650
  • 哪一行报错?
  • 当时变量的值是多少?
  • 那么就可以了。您需要在当前的 if/then 之前添加另一个 if/then 以测试错误。 IF Not IsError(.Range(FillP(j) & i)) Then
  • @ScottCraner - Variant 会默默地将自己提升为 Long,而不是作为 Integer 溢出。事实上,它会默默地将自己提升为Double,而不是溢出为Long

标签: vba excel runtime-error


【解决方案1】:

当您尝试为变量赋值时会导致溢出,这超出了数据类型的限制。 恐怕您可能已将 i、j 或 n 声明为整数。

此外,在单元格和范围之前您不需要点运算符。

【讨论】:

    【解决方案2】:

    错误具体发生在哪里?仅从检查来看,您不需要 Cells 和 Range 之前的点。你只会在 with 语句中这样做

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多