Excel VBA求助:为选中行实现指定复制清除逻辑
优化后的Excel VBA宏代码(支持任意选中行)
优化后代码
Sub DuplicateAndClear() Dim targetRow As Long targetRow = Selection.Row ' 获取当前选中行的行号 ' 复制选中行并向下插入两行 Rows(targetRow).Copy Rows(targetRow + 1).Resize(2).Insert Shift:=xlDown Application.CutCopyMode = False ' 清除原选中行的C、D列 Range("C" & targetRow & ":D" & targetRow).ClearContents ' 清除第一份复制行的B、D列 Range("B" & targetRow + 1 & ",D" & targetRow + 1).ClearContents ' 清除第二份复制行的B、C列 Range("B" & targetRow + 2 & ":C" & targetRow + 2).ClearContents End Sub
优化说明
- 适配任意选中行:通过
Selection.Row获取当前选中行的行号,不再固定操作第2行 - 移除冗余操作:删除录制宏产生的
Select、Activate语句,直接操作Range对象,提升执行效率与稳定性 - 简化插入逻辑:使用
Resize(2)一次性插入两行,减少重复代码 - 代码更易读:明确变量定义,每一步操作的注释清晰
内容的提问来源于stack exchange,提问作者Abedalraheem Al-Zabt
相关产品推荐
相关产品推荐

