将行值分配给具有列偏移的其他工作表

时间:2016-03-14 16:37:37

标签: excel-vba vba excel

是否可以从一个工作表中分配范围值/整行并将分配偏移一行?

使用下面的代码,我可以复制行但没有偏移。

ws_To_See.Rows("1:2").Value = ws_New_Ver.Rows("1:2").Value

1 个答案:

答案 0 :(得分:1)

  

是否可以从一个工作表中分配范围值/整行并将分配偏移一行?

,您可以对整个行执行直接值传输,直至距离源.Offset为向上或向下,直到偏移足以推动目标关闭工作表。

'push the values from New_Ver!1:2 into To_See!6:7
ws_To_See.Rows("1:2").Offset(5, 0) = ws_New_Ver.Rows("1:2").Value

,您无法对整个行执行直接值转移,无论是向左还是向右移动到源.Offset的目的地都是任意数量,因为该偏移量(通过严格的定义)足以将目的地推离工作表。

'the destination here is a #REF! because it cannot exist on the destination worksheet
ws_To_See.Rows("1:2").Offset(0, 5) = ws_New_Ver.Rows("1:2").Value
ws_To_See.Rows("1:2").Offset(0, -5) = ws_New_Ver.Rows("1:2").Value

但是,您可以调整源的大小以适应向右偏移的已调整大小的目标中的可用单元格数。

'the destination here is OK because the source has been resized to suit the column offset
'remember to Resize BEFORE Offsetting to avoid #REF!
ws_To_See.Rows("1:2").Resize(2, Columns.Count - 5).Offset(0, 5) = _
    ws_New_Ver.Rows("1:2").Resize(2, Columns.Count - 5).Value  '<~~ works!
ws_To_See.Rows("1:2").Offset(0, 5).Resize(2, Columns.Count - 5) = _
    ws_New_Ver.Rows("1:2").Resize(2, Columns.Count - 5).Value  '<~~ #REF!

'but you still cannot choose a destination to the left of column A
ws_To_See.Rows("1:2").Cells.Resize(2, Columns.Count - 5).Offset(0, -5) = _
    ws_New_Ver.Rows("1:2").Cells.Resize(1, Columns.Count - 5).Value  '<~~ #REF!

如上一个场景所述,您必须在偏移之前.Resize 才能维护有效的工作表单元格范围。