我对我认为是一个简单的 vba 命令有一些问题:
Worksheets("Sheet").Range("namedrange_d").Resize(0, 4).Offset(6, 0).Copy _
Destination:=Worksheets("Sheet1").Range("namedrange").Resize(0, 4).Offset(6, 0)
我想复制 5 个单元格宽的默认范围,即参考单元格 ( namedrange_d
) 下方的 7 个单元格。语法有什么问题?
零不是调整大小的有效参数。如果要保持范围的原始大小,只需省略参数即可。否则,您需要明确指定行数和列数。这是保留原始行数的方法
Worksheets("Sheet").Range("namedrange_d").Resize(, 4).Offset(6, 0).Copy _
Worksheets("Sheet1").Range("namedrange").Resize(, 4).Offset(6, 0)
我会做以下事情(我非常明确 - 这往往会使代码更易于阅读和调试,对速度的影响最小。这不是“聪明”。):
Dim dataSource As Range
Dim firstCellSource, firstCellDest As Range
Set firstCellSource = Worksheets("Sheet1").Range("namedrange_d").Offset(6, 0)
Set firstCellDest = Worksheets("Sheet1").Range("namedrange").Offset(6, 0)
Set dataSource = Range(firstCellSource, firstCellSource.Offset(0, 4))
dataSource.Copy Destination:=firstCellDest
像这样,代码本质上是“自我记录”,很容易看到你在做什么。请注意,您只需要提供目的地的第一个单元格。
先偏移,然后Range("A1:E1")
用来引用5列宽的区域:
Worksheets("Sheet").Range("namedrange_d").Offset(7,0).Range("A1:E1").Copy Destination:=Worksheets("Sheet1").Range("namedrange")
...这应该就是你所需要的