我有這樣的代碼:VBA:我改變了ARR(0),不明白爲什麼ARR(1)改變了?
Call MakeRoomForArrayItem(interAll, 0)
interAll(0).StartY = tempStartY
interAll(0).K = tempK
在我被一個成功地創建一個新的細長interAll()的第一行。
然後我希望第二行和第三行僅影響interAll(0),但它們對interAll(1)執行相同的更改。爲什麼是這樣?我沒有成功創建interAll(1)的新對象嗎?
Sub MakeRoomForArrayItem(ItemArray As Variant, ByVal ItemElement As Integer)
Dim i As Integer
ReDim Preserve ItemArray(LBound(ItemArray) To UBound(ItemArray) + 1)
For i = UBound(ItemArray) - 1 To ItemElement Step -1
Set ItemArray(i + 1) = ItemArray(i)
Next
'Erase values in object ItemArray(ItemElement) would be nice
End Sub
我在其他情況下成功地使用了相同的功能。它可能與調用函數中缺少聲明有關嗎?
編輯:我加入
Set interval = New CInterval
Set interAll(0) = interval
你能向我解釋這裏到底發生了什麼,這樣我就不會再犯同樣的錯誤修復了這個問題?
噓,千萬不要忘了給予好評,你發現的有用的意見,並接受你找到最有用的答案! (它不一定是我的!) – 2012-03-29 22:18:46