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 并且它也会失败。
考虑以下:
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 并且它也会失败。