【发布时间】:2015-10-01 04:55:53
【问题描述】:
我试图让我的代码每次在下面的单元格中发现差异时插入四行。如果 A5-55 = 1, A56-80 = 2, A81 - 100 = 3 我希望代码看到 56 不等于 55 并插入 4 行,然后继续向下 A 列直到没有更多值。
我不断收到来自 Excel 的错误,
无法完成任务。资源错误
然后range类的一个runtime 1004 insert方法失败,调试器高亮插入行的代码
这是我的数据的样子:
Worksheets("HR-Calc").Activate
For lRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row To 6 Step -1
If Cells(lRow, "A") <> Cells(lRow - 1, "A") Then
Rows(lRow).EntireRow.Insert
Rows(lRow).EntireRow.Insert
Rows(lRow).EntireRow.Insert
Rows(lRow).EntireRow.Insert
End If
Next lRow
【问题讨论】:
-
资源耗尽是不好的 XD 你有多少行?
-
您是否尝试过通过调试单步执行代码?我想知道您的代码是否以某种方式导致了无限循环。
-
您应该使用 Cells(lRow,1).Value 或 Range("A" & lRow).value。 Cells 采用行号和列号 (1,1) 输入,Range 采用 Cell Reference A1 类型输入
-
另外,以@findwindow 的问题为基础,这取决于您如何声明 lRow 可能会用完那里的空间。整数数据类型只允许介于 -32768 和 32767 之间的数字。因此,如果行数超过 32767,则应将其声明为 Long
-
我发现了问题。我有一个复制的单元格范围,它用于查找列中的最后一个单元格并从 a100000 开始,然后使用 xlup 查找最后一行数据。我忘了更改那 100,000 个,它一次粘贴了大约 200 万个数据单元,因此出现了错误。但是感谢您的注释,有没有更好的方法来做这个插入?它在我看来仍然很笨重。