Excel VBA问题:使用Range复制数据时指定行数参数被忽略
Range参数拼接错误导致复制整列的问题解决
你的代码里mySource.Range("A1:B1" & 3)这一行的字符串拼接逻辑出错了:
- 拼接后实际生成的是
"A1:B13",而不是你想要的"A1:B3" - 这个范围会覆盖A1到B13的区域,所以看起来像是复制了整列数据
几种修正方案:
修正字符串拼接
把"A1:B1" & 3改成"A1:B" & 3,这样就能得到正确的A1:B3范围:mySource.Range("A1:B" & 3).Copy使用Resize方法(更灵活)
基于起始单元格扩展行数和列数,适合动态行数的场景:' 从A1开始,扩展3行2列,得到A1:B3 mySource.Range("A1").Resize(3, 2).Copy或者基于A1:B1扩展行数:
mySource.Range("A1:B1").Resize(3).Copy直接写死固定范围(行数固定时)
如果不需要动态行数,直接写明确的范围更直观:mySource.Range("A1:B3").Copy
动态行数示例(如果实际代码需要变量控制)
如果要复制的行数是变量,比如用rowCount存储行数:
Dim rowCount As Integer rowCount = 3 ' 这里可以替换成动态计算的行数 mySource.Range("A1:B" & rowCount).Copy
内容的提问来源于stack exchange,提问作者scs
相关产品推荐
相关产品推荐

