运行时错误1004对象应用程序定义或对象定义错误

时间:2018-08-21 13:14:40

标签: excel-vba

我的代码有错误“运行时错误1004应用程序定义或对象定义错误”。我的Excel文件没有保护表或单元格。但是代码仍然在最后一行显示错误 请帮我。该文件包含90万行和25列。

option explicit
    Sub remove()
Dim i, j As Long
Dim a As Variant
Dim lsrw As Long
Dim arr()
Dim rearr()
lsrw = Sheet1.Range("A1000000").End(xlUp).Row

arr = Sheet1.Range("F2:W" & lsrw).Value

ReDim rearr(1 To UBound(arr), 1 To 18)

        For i = 1 To UBound(arr())
            For j = 1 To 18
                If arr(i, j) <> "" Then
                    If Len(arr(i, j)) > 9 Then
                        If InStr(1, Trim(arr(i, j)), " ") > 0 Then
                            For Each a In Split(arr(i, j), " ")
                                If Len(a) >= 9 Then
                                    rearr(i, j) = arr(i, j)
                                    Exit For
                                Else: rearr(i, j) = ""
                                End If
                            Next a
                        Else: rearr(i, j) = arr(i, j)
                        End If
                    Else: rearr(i, j) = ""
                    End If
                End If
            Next j
        Next i              
Sheets("Sheet1").Range("F2").Resize(i - 1, 18) = rearr ==>error

End Sub

如果我添加“下一步出错恢复”,我发现代码可以在中断前执行95k行

1 个答案:

答案 0 :(得分:0)

我从未见过对此事的官方确认,但是有许多关于此问题的报告,随后声称在Excel 2010及更高版本中数组到范围的复制限制为65536行(请参见此处,有关实例:https://social.msdn.microsoft.com/Forums/en-US/c45d37f1-a5f1-4cf4-938d-69d294d8e447/limitations-on-arrays?forum=isvvba

再说一次,我找不到任何官方的东西。

唯一明显的解决方法是,而不是一次将整个数组转储到一个范围内,而是每65,000行左右将其分块复制出来。