内存不足错误 - 关于数据排序

时间:2017-01-03 16:26:11

标签: excel excel-vba vba

我有以下代码。哪个工作正常,但现在我收到了错误。 "运行时错误' 7':Out of Memory"以下是我的代码:

Sub SpiltData()

Dim tmpArr As Variant, rCell As Range, v, i As Long, v2(), J As Long, K As Long
Dim ws1 As Worksheet, ws2 As Worksheet, n As Long

ThisWorkbook.Sheets("Data").Activate

Set ws1 = ActiveSheet
Set ws2 = Sheets("Hours Sorted")  'You need to specify a sheet here

v = ws1.Range("J6").CurrentRegion.Value
ReDim v2(1 To UBound(v, 1) * 100, 1 To UBound(v, 2))
n = 1

For i = LBound(v, 1) To UBound(v, 1)
tmpArr = Split(v(i, 10), Chr(10))
For K = 0 To UBound(tmpArr)
    For J = LBound(v, 2) To UBound(v, 2)
        v2(n, J) = v(i, J)
    Next J
    v2(n, 10) = tmpArr(K)
    n = n + 1
Next K
Next i

ws2.Range("A1").Resize(n, UBound(v2, 2)) = v2

End Sub

我能做些什么不同的事情吗?

1 个答案:

答案 0 :(得分:0)

如果你是从一个巨大的选择开始,并且你的回车分区数据在你的数组的位置10很大,那么你将导致"巨大的x大"结果数量,全部保存在内存中,直到它被转储回Close

或者,您可以遍历范围并在遇到值时写出来。保持变量的美观和小巧,并且可能更容易理解和调试代码。为了更快地完成这项工作,您可以关闭ws2切换。

application.screenupdating

这可能需要稍微调整一下,因为我从阵列转换到范围并做了一些假设,但它会让你在球场上,如果它需要和你的主要限制,excel会在这整天开始是excel中的行数而不是ram。