用vba抵消和resize
我认为是一个简单的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个单元格。 语法有什么问题?
零不是resize的有效参数。 如果要保持范围的原始大小,只需省略参数即可。 否则,您需要明确指定行数和列数。 这是你将如何保持原来的行数
Worksheets("Sheet").Range("namedrange_d").Resize(, 4).Offset(6, 0).Copy _ Worksheets("Sheet1").Range("namedrange").Resize(, 4).Offset(6, 0)
先偏移,然后使用Range("A1:E1")
引用5列宽度区域:
Worksheets("Sheet").Range("namedrange_d").Offset(7,0).Range("A1:E1").Copy Destination:=Worksheets("Sheet1").Range("namedrange")
…应该是你需要的一切
我会做下面的事情(我是非常明确的 – 这往往会使代码更容易阅读和debugging,速度影响最小,而不是“聪明”):
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
像这样,代码基本上是“自我logging”,很容易看到你在做什么。 请注意,您只需要提供目的地的第一个单元格。