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