我的代码有错误“运行时错误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行
答案 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行左右将其分块复制出来。