Excel VBA每行后插入空白行代码终止于1020行的优化问询
解决Excel VBA插入空白行到末尾时中途停止的问题
我明白你遇到的困扰了——你的代码一开始就把最后一行数据的位置固定成了y,但每次插入空白行都会让表格的总行数增加,当循环走到初始记录的1020行时就停止了,可这时候后面还有原本的数据行因为插入操作被挤到更下面,根本没被处理到!
修改后的代码
Sub InsertBlankRows() Dim r As Long ' 先定位到最后一行有数据的行 r = Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp).Row ' 从最后一行开始往上循环处理 Do While r >= 2 Sheet1.Rows(r).Insert Shift:=xlDown r = r - 1 Loop End Sub
为什么这样修改?
- 从下往上循环是关键:如果保持从上往下的逻辑,插入空白行后,后续的数据行号会被往后推,不仅可能跳过部分行,而且初始固定的
y值无法覆盖因为插入操作新增的行位置。反过来从最后一行开始往上处理,每插入一行都不会影响还没处理的上方行,能确保所有数据行下面都插入空白行。 - 我把原函数名
del_row改成了InsertBlankRows,这样函数名和实际功能更匹配,后续维护也更清晰。
如果你需要的是每隔一行插入空白行(而非每行后都插),也可以调整循环的步长,核心逻辑还是要从下往上:
Sub InsertEveryOtherRow() Dim r As Long r = Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp).Row For r = r To 2 Step -2 Sheet1.Rows(r).Insert Shift:=xlDown Next r End Sub
内容的提问来源于stack exchange,提问作者user3839044
相关产品推荐
相关产品推荐

