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