|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 路的前方是梦想 于 2023-2-14 22:31 编辑
程序如下所示:ubound(arr)=9949,但是在for这个语句中,运行程序,i会显示到9950,导致 .[a3].Resize(UBound(arr), 59) = arr,这句话会内存溢出,这是为什么呢?请老师指导,谢谢!!
Sub demo11()
Dim arr
With Sheet6
arr = .Range(.[bg3], .Cells(Rows.Count, 1).End(3))
For i = 1 To UBound(arr)
If Len(arr(i, 24)) <> 0 Then
arr(i, 39) = arr(i, 25) / arr(i, 24)
End If
If Len(arr(i, 14)) <> 0 And (arr(i, 10) - arr(i, 14)) <> 0 Then
arr(i, 38) = (arr(i, 11) - arr(i, 15)) / (arr(i, 10) - arr(i, 14))
Else
If Len(arr(i, 12)) <> 0 And (arr(i, 10) - arr(i, 12)) <> 0 Then
arr(i, 38) = (arr(i, 11) - arr(i, 13)) / (arr(i, 10) - arr(i, 12))
Else
If Len(arr(i, 10)) <> 0 Then
arr(i, 38) = arr(i, 11) / (arr(i, 10) - arr(i, 9))
End If
End If
End If
If Len(arr(i, 16)) <> 0 And Len(arr(i, 18)) <> 0 Then
arr(i, 42) = arr(i, 16) - arr(i, 18)
arr(i, 43) = arr(i, 17) - arr(i, 19)
End If
If Len(arr(i, 18)) <> 0 And Len(arr(i, 20)) <> 0 Then
arr(i, 44) = arr(i, 18) - arr(i, 20)
arr(i, 45) = arr(i, 19) - arr(i, 21)
End If
If Len(arr(i, 20)) <> 0 And Len(arr(i, 22)) <> 0 Then
arr(i, 46) = arr(i, 20) - arr(i, 22)
arr(i, 47) = arr(i, 21) - arr(i, 23)
End If
Next i
.[a3].Resize(UBound(arr), 59) = arr
End With
End Sub
|
|