我有一種將自定義對象添加到循環中的數組的方法。問題是,添加到數組的最後一個對象似乎覆蓋了數組中的所有其他對象。我已經加入了代碼,看到最初添加了正確的對象,但我似乎無法弄清楚爲什麼最後一個對象會覆蓋所有其他對象。我有一種感覺,它與內存指針和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
有一點要注意的是,該行:如果我<>或者1 <> 0,則永遠是真實的,這是個好,否則這些元素不會被填滿。我認爲你可以刪除它。 – 2012-04-02 01:31:01
那些不會總是評價爲真,循環經歷了兩次以上的多次。所以有時我> 1 – ferics2 2012-04-02 02:00:17
我的意思是,我總是不等於1或不等於0.如果我等於1,它不等於0,反之亦然,因此該語句總是計算爲真。我相信你的意思是使用AND語句。但是,如果你這樣做,那麼陣列將不會被標註,直到我點擊2,並且你的代碼將失敗:設置CallNumObjs(i)= CallNum,當i = 0或i = 1時。 – 2012-04-02 02:09:21