У меня есть метод, который добавляет пользовательские объекты в массив в цикле. Проблема в том, что последний объект, добавленный в массив, перезаписывает все остальные объекты в массиве. Я прошел по коду, чтобы увидеть, что правильные объекты добавляются изначально, но я не могу понять, почему последний объект перезаписывает все остальные. У меня такое ощущение, что это как-то связано с указателями памяти и моим объектом CallNum, но я не смог понять это.
Function getCallNumObjects(TotalCol As Integer) As Lib_CallNum
'
' Find all the call numbers and their coresponding total
'
Dim CallNumObjs() As Lib_CallNum
Dim i As Integer
i = 0
Do Until ActiveCell.Value = "$<total:U>"
If i <> 1 Or i <> 0 Then
ReDim Preserve CallNumObjs(i) As Lib_CallNum
End If
Dim CallNum As New Lib_CallNum
CallNum.Title = Replace(ActiveCell.Value & ActiveCell.Offset(1, 0).Value, " ", "")
CallNum.Total = ActiveCell.Offset(0, TotalCol - 1).Value
Set CallNumObjs(i) = CallNum
ActiveCell.Offset(2, 0).Activate
Debug.Print CallNumObjs(i).Title
i = i + 1
Loop
Debug.Print CallNumObjs(0).Title
Debug.Print CallNumObjs(1).Title
Debug.Print CallNumObjs(2).Title
Set getCallNumObjects = CallNumObjs
End Function
Выход этой функции:
DS0000701-DS000800
LH-PK
PL001001-PL003300
Печать после цикла:
PL001001-PL003300
PL001001-PL003300
PL001001-PL003300