range.copy 目的地 "A1" 对比 "Cells(1,1)" Excel/VBA

range.copy Destination "A1" vs "Cells(1,1)" Excel/VBA

考虑以下:

    Sheets("X").Activate
    Sheets("X").Range(Cells(1, 1), Cells(1, 30)).Copy Destination:=Sheets("Y").Range("A1") 'Syntax 1
    Sheets("X").Range(Cells(1, 1), Cells(1, 30)).Copy Destination:=Sheets("Y").Range(Cells(1, 1)) 'Syntax 2

为什么语法 1 有效而语法 2 遇到 'Application-defined or object-defined error'?

不合格Cells(1,1)属于ActiveSheet,目前是Sheets("X"),所以不属于Sheets("Y").

OTOH:这应该有效:

Destination:=Sheets("Y").Range(Sheets("Y").Cells(1, 1), Sheets("Y").Cells(1, 1)) 
'                             ^^^^^^^^^^^^^

不要使用不合格的范围。从您的代码中完全删除 Activate 东西。

您还没有限定 sheet 名称。因此复制发生在 ActiveSheet 上,然后它尝试从 ActiveSheet 引用 Cell(1,1) 但在 sheet Y:

Sheets("Y").Range(Cells(1, 1))

Sheets("Y") 是 sheet Y。 Cells(1,1) 是 ActiveSheet。

复制之所以有效,是因为您首先激活了 sheet X。删除该行,select 另一个 sheet 并且它也会失败。