簡體   English   中英

設置范圍時 VBA 運行時錯誤 1004

[英]VBA Runtime error 1004 while setting a range

基本上我試圖優化在動態范圍內復制值的過程。

這是我目前擁有的並且有效:

For i = 0 To 6
    Worksheets("S").Cells(wstaty, (4 + i)).Value = Worksheets("B").Cells(id, (13 + i)).Value
Next i

我想用更快的方法替換迭代,例如:

Range("A1:A5").Value = Range("B1:B5").Value

但是當我嘗試:

Worksheets("S").Range(Cells(wstaty, 4), Cells(wstaty, 10)).Value = Worksheets("B").Range(Cells(id, 13), Cells(id, 19)).Value

我得到

運行時錯誤 1004

所以我分解了語句以找出問題所在,所以我有:

Dim r1, r2 As Range

        Set r1 = Worksheets("S").Range(Cells(wstaty, 4), Cells(wstaty, 10))
        Set r2 = Worksheets("B").Range(Cells(id, 13), Cells(id, 19))  ' <-- error here
        r1.Value = r2.Value

並且調試器說 Set r2 行發生錯誤,這對我來說沒有多大意義

(變量 ID 總是 > 2 )

Cells(...) 與當前工作表相關。 因此,為了安全起見,您最好始終使用全名來尋址范圍。 在您的示例中,它將是

Worksheets("B").Range(Worksheets("B").Cells(…), Worksheets("B").Cells(…))等等。

為了避免冗長的代碼,我建議改用工作表的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM