[英]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.