[英]VBA Runtime Error 1004 “Application-defined or Object-defined error” when trying to assign value to a variable
[英]VBA Runtime Error 1004 "Application-defined or Object-defined error" when trying to assign values to a range
我不確定為什么在嘗試運行以下代碼時出現此錯誤
Sub introtocollection()
Dim i As Integer
Dim coll As New Collection
Dim r As Range
Set r = Worksheets("Sheet1").Range(Cells(1, 1), Cells(5, 2))
For i = 2 To 5
coll.Add r.Cells(i, 2)
Next i
For i = 2 To 5
Worksheets("Sheet1").Range(Cells(i, 6)).Value = coll(i).Value
Next i
End Sub
該錯誤在下面的代碼行中突出顯示
Worksheets("Sheet1").Range(Cells(i, 6)).Value = coll(i).Value
嘗試Worksheets("Sheet1").Range(Cells(i, 6)).Value = coll(i,2).Value
它可能會有所幫助
這個錯誤很可能是由於代碼試圖通過Cells(i,6)
中的地址或名稱間接到達某個區域(請參閱Range 中的第一個參數是如何解釋的)。 假設您將字符串 "A1" 放入單元格F2
中,即Cells(2, 6)
。 然后代碼Range(Cells(2,6))
將Cells(2,6)
替換為其值並返回Range("A1")
。
我認為這不是你的意圖。 我猜Cells(i,6)
對於i=2 to 5
是空的,或者不包含正確的范圍地址。 也許你想做這樣的事情:
Worksheets("Sheet1").Cells(i, 6).Value = coll(i).Value
如果是這樣,那么請注意如何提供Collection
鍵的分配,因為您還有另一個陷阱。 如果您省略顯式聲明鍵,則它們會從 1 開始自動分配。因此,您將得到的下一個錯誤是Subscript out of range in the second for-loop at i=5
。 為避免這種情況,請顯式聲明鍵:
coll.Add r.Cells(i, 2), Key:=i
附言
盡管如此,如果您想要對單元格進行完全間接的訪問,那么您應該檢查F2:F5
范圍內地址的正確性。 我無法想象其他任何事情都可能導致您提到的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.