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

如何复制行并插入到另一工作表指定行后删除原行

修改VBA代码实现指定位置插入行

你可以通过调整代码的复制插入逻辑,实现将符合条件的行插入到目标工作表的指定位置,同时下移原有内容。以下是修改后的完整代码:

Sub MoveRow_DeleteOriginal()
    Dim rg As Range
    Dim targetRow As Long ' 指定插入的目标行位置
    Dim p As Long
    Dim r As Long
    Dim x As Long ' 统计移动的行数
    
    ' 设置要插入的目标行号,比如插入到第3行,原有第3行及以下内容自动下移
    targetRow = 3
    
    p = Worksheets("Open Projects").UsedRange.Rows.Count
    Set rg = Worksheets("Open Projects").Range("M5:M" & p)
    
    On Error Resume Next
    Application.ScreenUpdating = False
    
    ' 倒序循环避免删除行后索引错乱,保证所有符合条件的行都被处理
    For r = rg.Count To 1 Step -1
        If CStr(rg(r).Value) = "Complete" Then
            ' 复制当前行,插入到目标工作表的指定行位置
            rg(r).EntireRow.Copy
            Worksheets("Closed Projects").Rows(targetRow).Insert Shift:=xlShiftDown
            
            ' 删除原工作表中的该行
            rg(r).EntireRow.Delete
            x = x + 1
        End If
    Next r
    
    Application.ScreenUpdating = True
    MsgBox "共完成 " & x & " 行数据的移动", vbInformation ' 可选:显示移动结果提示
End Sub

关键修改说明

  • 指定插入位置:新增targetRow变量,直接设置你需要插入的行号(示例中为3),运行时会将行插入到该位置,原有行自动下移
  • 倒序循环优化:将原代码的正序循环改为倒序循环,避免删除行后后续行的索引错乱,确保所有符合条件的行都能被正确处理
  • 替换插入逻辑:用Copy+Insert替代原有的Copy Destination,实现插入而非追加到末尾的效果
  • 修正错误:修复了原代码中Closed Proejcts的拼写错误,同时补全了未定义的x变量

内容的提问来源于stack exchange,提问作者Bizguy101

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:00:22