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

时间:2015-05-27 20:27:12

标签: vba excel-vba copy paste excel

我正在尝试将范围从一个工作表复制到另一个工作表。我有多个范围,我想在新工作表中的不同点复制和粘贴(例如,我想将第一个范围粘贴到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))

当我运行后一行代码时,我得到“运行时错误1004:应用程序定义或对象定义错误”。为什么这样,我该如何解决?

1 个答案:

答案 0 :(得分:7)

您正在指定Range的父级,但不指定Cells的父级。简而言之,您试图在Sheet1上定义一系列包含Sheet2上的单元格和/或反之亦然的单元格。

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)就足够了。