簡體   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