如何复制行并插入到另一工作表指定行后删除原行
修改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
相关产品推荐
相关产品推荐

