我对我认为简单的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个单元格的默认范围,即参考单元格下的7个单元格(namedrange_d
)。语法有什么问题?
答案 0 :(得分:7)
零不是调整大小的有效参数。如果要保留范围的原始大小,只需省略参数即可。否则,您需要明确指定行数和列数。以下是保留原始行数的方法
Worksheets("Sheet").Range("namedrange_d").Resize(, 4).Offset(6, 0).Copy _
Worksheets("Sheet1").Range("namedrange").Resize(, 4).Offset(6, 0)
答案 1 :(得分:1)
首先偏移,然后使用Range("A1:E1")
引用5列宽度区域:
Worksheets("Sheet").Range("namedrange_d").Offset(7,0).Range("A1:E1").Copy Destination:=Worksheets("Sheet1").Range("namedrange")
......应该就是你需要的一切
答案 2 :(得分:1)
我会做以下(我非常明确 - 这往往会使代码更容易阅读和调试,速度影响最小。它不是“聪明”。):
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
像这样代码本质上是“自我记录”,很容易看出你在做什么。请注意,您只需要提供目的地的第一个单元格。