使用单元格将范围从一个工作表复制到另一个工作表 属性

Copy a range from one worksheet to another using cells property

我正在尝试将范围从一个工作表复制到另一个工作表。我有多个范围,我想在新工作表的不同点复制和粘贴(例如,我想将第一个范围粘贴到 D3,然后将下一个范围粘贴到 E12,依此类推),所以我正在使用单元格 属性 来描述范围。但是,出于某种原因,当我使用单元格格式而不是仅仅输入字符串来描述我想在新工作表中粘贴的范围时,它不起作用。

这行代码确实有效:

Sheets("Sheet1").Range(Cells(2, 3), Cells(10, 3)).Copy _
  Destination:=Sheets("Sheet2").Range("D3")

但这个不是:

Sheets("Sheet1").Range(Cells(2, 3), Cells(10, 3)).Copy _
  Destination:=Sheets("Sheet2").Range(Cells(3,4))

当我运行后一行代码时,我得到一个"Run-time error 1004: application-defined or object defined error"。为什么会这样,我该如何解决?

您指定的是 Range 的父级而不是 Cells 的父级。简而言之,您试图在 Sheet1 上定义一系列单元格,这些单元格包含 Sheet2 上的单元格 and/or 反之亦然。

dim ws2 as worksheet
set ws2 = sheets("Sheet2")

with sheets("Sheet1")
    .Range(.Cells(2, 3), .Cells(10, 3)).Copy _
      Destination:=ws2.Range(ws2.Cells(3,4))
end with

前缀句点(又名 . 句点 )表示 .Range.Cells 的父项定义为 With...End With statement。为了缩短在 Sheet2 上正确定义范围所需的代码,我分配了一个工作表类型变量并用它来显示范围和单元格的父级。

FWIW,ws2.Range(ws2.Cells(3,4)) 是多余的。 ws2.Cells(3,4) 就够了。