2010-07-11 137 views
6

我不明白爲什麼在此代碼底部的Debug.Print n & " - " & objTrans2.DESC行正在輸出「說明2」兩次。我希望它輸出「描述1」和「描述2」。無法用自定義對象使用Collection.add填充VBA集合

是否有什麼問題,我想通過在For循環中通過sampleCollection.Add添加自定義對象(事務)?代碼奇妙地工作,如果我添加字符串而不是對象的集合。

Public Function PopCollection() 
    Dim sampleCollection As New Collection 
    Dim objTrans As New Transaction 
    Dim objTrans2 As New Transaction 


    '********** SETUP ARRAY FOR LOOP ************* 
    Dim arrA(0 To 1) As String 
    arrA(0) = "Description 1" 
    arrA(1) = "Description 2" 


    '********** POPULATE COLLECTION ************* 
    For n = 0 To 1 
     objTrans.DESC = arrA(n) 
     Call sampleCollection.Add(objTrans) 
    Next n 


    '********** ITERATE THROUGH COLLECTION ************* 
    For n = 1 To sampleCollection.Count 
     Set objTrans2 = sampleCollection.Item(n) 
     Debug.Print n & " - " & objTrans2.DESC 
    Next n 

End Function 

任何幫助newbee的讚賞!

~~~~~~~~~~~~~~~~~~~~~~~

針對米奇的迴應,這裏是交易類的信息:

Public PTXN As Integer 
Public ACCTID As Integer 
Public CHECKNUM As String 
Public DESC As String 
Public STATUS As String 
Public TRANSACTIONDATE As String 
Public SPLIT_DESC As String 
Public SPLIT_AMT As Single 
Public SPLIT_CATEGORY As Integer 

我只將屬性聲明添加到Excel中的VB編輯器中......所以我複製/粘貼了那裏列出的內容。

回答

6

您需要創建一個objTrans的新實例。你在做什麼是將DESC設置爲描述1,添加到集合中,然後將DESC更改爲描述2(不創建新的objTrans實例),並將同一實例再次添加到集合中。這是我將如何去做的。

Public Function PopCollection() 

    Dim sampleCollection As Collection 
    Dim objTrans As Transaction 
    Dim arrA As Variant 
    Dim n As Long 

    arrA = Array("Description 1", "Description 2") 
    Set sampleCollection = New Collection 

    For n = LBound(arrA) To UBound(arrA) 
     Set objTrans = New Transaction 
     objTrans.DESC = arrA(n) 
     sampleCollection.Add objTrans 
    Next n 

    For n = 1 To sampleCollection.Count 
     Set objTrans = sampleCollection.Item(n) 
     Debug.Print n & " - " & objTrans.DESC 
    Next n 

End Function 
+0

迪克,工作!謝謝!我花了數小時試圖弄清楚。感謝解釋和清理代碼...我喜歡看其他人如何更新我的代碼。 – Eric 2010-07-12 11:02:12

1

一個稍微修改過的表單(沒有Transaction類)按我的意圖工作。我相信有一個錯誤是您的交易類。你可以發佈代碼嗎?

+0

米奇,我在上面的描述中添加了一些更多的代碼。 也許你可以告訴我你用什麼來代替我的交易類?也許我可以試着讓你的代碼在我的最後工作。 – Eric 2010-07-11 03:35:06

相關問題