内存不足错误VBA – Excel

以下代码块中出现内存不足错误。 有没有人看到明显的原因为什么?

编辑代码显示整个块。 最终这将循环通过一个目录,但直到工作,我只会看一个文件。

Sub Get_BT_Data() Dim fNameAndPath, data As Variant Dim j, c, r As Integer fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLSM), *.XLSM", Title:="Select File To Be Opened") If fNameAndPath = False Then Exit Sub Workbooks.Open Filename:=fNameAndPath Sheets("Summary For CDP").Activate j = Range("A2").Value c = Range("B2").Value data = Range("DataRay") ThisWorkbook.Activate r = Cells(7, 4).End(xlDown).Row For i = 7 To r If Cells(i, 4).Value = j Then If Cells(i, 4).Offset(0, 1).Value = c Then Cells(i, 4).Offset(0, 3).Value = data(9, 20) Cells(i, 4).Offset(0, 4).Value = data(22, 22) Cells(i, 4).Offset(0, 7).Value = data(2, 20) Cells(i, 4).Offset(0, 8).Value = data(15, 22) Cells(i, 4).Offset(0, 10).Value = data(5, 20) Cells(i, 4).Offset(0, 11).Value = data(18, 22) Cells(i, 4).Offset(0, 13).Value = data(3, 22) Cells(i, 4).Offset(0, 14).Value = data(16, 22) Cells(i, 4).Offset(0, 16).Value = data(4, 20) + data(6, 20) Cells(i, 4).Offset(0, 17).Value = data(17, 22) + data(19, 22) Cells(i, 4).Offset(0, 19).Value = data(7, 20) Cells(i, 4).Offset(0, 20).Value = data(20, 22) Else If i = r Then Cells(7, 4).End(xlDown).Offset(-2, 0).EntireRow.Insert Else End If End If Else End If Next i End Sub 

尝试检查r的值是什么

更改r = Cells(7, 4).End(xlDown).Row 。如下所示可能会有所帮助。

 r = Cells(Rows.count, 4).End(xlUp).Row 

这条线相同

 Cells(7, 4).End(xlDown).Offset(-2, 0).EntireRow.Insert 

使用XlDown可能很危险,因为如果列中有空白,或者第7行没有数据,则可能会错过值,然后返回表格底部的行。 我怀疑这种情况可能会发生。

当您尝试查找最后一行数据时,通常最好从表格底部开始。

也,

你应该看看你的"DataRay"范围有"DataRay" ,试着用一个适当的范围而不是一个命名的范围来代替它,

Range("DataRay")更改为Range("A1:E500")

如果你想检查你的DataRay范围的大小,那么你可以在代码开始时使用以下代码进行debugging

 MsgBox Range("DataRay").Rows.Count & " Rows " & Range("DataRay").Columns.Count & " Columns"