内存不足错误VBA-Excel
下面的代码块出现内存不足错误。有没有人看到明显的原因 编辑代码以显示整个块。最终,这将在一个目录中循环,但在工作之前,我将只查看一个文件内存不足错误VBA-Excel,excel,vba,memory,Excel,Vba,Memory,下面的代码块出现内存不足错误。有没有人看到明显的原因 编辑代码以显示整个块。最终,这将在一个目录中循环,但在工作之前,我将只查看一个文件 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
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=单元格(7,4).结束(xlDown).行更改到下面可能会有所帮助
r = Cells(Rows.count, 4).End(xlUp).Row
这一行也一样
Cells(7, 4).End(xlDown).Offset(-2, 0).EntireRow.Insert
使用XlDown
可能会很危险,因为如果列中有空格,则可能会错过值,或者如果第7行下面没有数据,则会返回工作表底部的行。我怀疑这种情况可能会发生
当您试图查找最后一行数据时,通常最好从工作表的底部开始
而且
您应该查看您的“DataRay”
范围有多大,尝试将其替换为适当的范围而不是命名的范围
将范围(“DataRay”)
更改为类似范围(“A1:E500”)
如果要检查DataRay
范围的大小,则可以在代码的开头使用以下内容进行调试
MsgBox Range("DataRay").Rows.Count & " Rows " & Range("DataRay").Columns.Count & " Columns"
r
的最大值是多少?我将r声明为一个整数,最大值可能永远不会超过400。我需要声明为long吗?我正在向variant数组传递一个范围,它是22列乘22行,我将用我代码的其余部分编辑我的原始问题。我尝试了,但没有成功。我用两种方法得到了r(260)的相同值。谢谢你关于从底部开始的提示。这很有道理。我一步一步地走到I=50,然后中断,这就是出错的时候。它在If i=r语句之前。@Clouse24您的代码中有另一行使用XlDown
尝试更改该行。我没有看到您将r
声明为整数,如果您超过了它的数据大小,那么您将得到溢出
错误,所以不会是这样。说到这一点,dimj,c,r作为整数
,在那句话中j
和c
被声明为变量
。它应该是Dim j作为整数,c作为整数,r作为整数
给了它一个机会,实际上必须声明两个同样长的变量,但它起了作用。非常感谢你的帮助!