如何将复制的M2:BM6区域粘贴至L列有内容的行(从M7开始)
问题分析与修正代码
你的代码无法正常运行主要有3个核心问题:
AutoFill是用于填充有规律序列(比如日期递增、数字连续序列)的方法,完全不适合复制固定的多行多列单元格区域到目标范围。- 原代码仅操作了M列,没有覆盖到BM列的完整区域,就算能运行也只会填充M列内容。
- 依赖
Select和Selection不仅降低代码效率,还容易因工作表切换、单元格选中状态变化导致错误。
以下是能实现需求的正确VBA代码:
Sub CopyRangeToTargetRows() Dim lastRow As Long ' 获取L列最后一个非空行的行号 lastRow = Range("L" & Rows.Count).End(xlUp).Row ' 直接复制M2:BM6区域到M7开始、对应L列有内容的所有行 Range("M2:BM6").Copy Destination:=Range("M7:BM" & lastRow) End Sub
代码说明
- 先通过
Range("L" & Rows.Count).End(xlUp).Row定位L列最后一行有内容的行号,确定目标区域的终点。 - 直接调用
Copy方法的Destination参数,一次性完成多列区域的复制粘贴,无需选中单元格,代码更简洁稳定。
内容的提问来源于stack exchange,提问作者Fábio Francisco Ribeiro
相关产品推荐
相关产品推荐

