复制过滤范围获取溢出错误

时间:2015-09-05 12:16:56

标签: excel excel-vba vba

COUNTIF函数计算的失败产品的失败计数。 counts > 0的结果会自动过滤。过滤后的结果将粘贴到sheet3。复制有限范围以测试程序逻辑。在代码行上获取Run time error 6 OverflownumbElements = targetRng.End(xlDown).Row 相关信息见下文。有人可以指出错误。

Sheet before auto filter
sheet after auto filter

 Sub test()

    Dim targetRng As Range
    Dim i As Integer

    Set targetRng = Sheets(3).Range("a1")
    Range("A1", Range("A999").End(xlUp)).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=targetRng, Unique:=True

    Dim numbElements As Integer
    numbElements = targetRng.End(xlDown).Row
    Dim arr() As String

    ReDim arr(1 To numbElements) As String

    For i = 1 To numbElements
        arr(i) = targetRng.Offset(i - 1, 0).Value
    Next i

End Sub

1 个答案:

答案 0 :(得分:2)

VBA中的最大Integer值为32767 (2^15-1)。将行号分配给Integer可能会导致溢出。

您应该将numbElementsi变量定义更改为LongLong的最大值为2147483647 (2^31-1)