You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:53:58