繁体   English   中英

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遇到“应用程序定义或对象定义的错误”?

您尚未限定工作表名称。 因此,复制发生在ActiveSheet上,然后尝试从ActiveSheet引用Cell(1,1),但在Y表上:

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

表格(“Y”)是表格Y. Cells(1,1)是ActiveSheet。

该副本仅起作用,因为您首先激活表单X. 删除该行,选择另一个工作表,它也将失败。

Unqualified Cells(1,1)属于ActiveSheet,它当前是Sheets(“X”),因此它不属于Sheets("Y")

OTOH:这应该有效:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM