2010-07-11 3 views
6

이 코드의 아래쪽에있는 Debug.Print n & " - " & objTrans2.DESC 줄에서 "설명 2"가 두 번 출력되는 이유를 알 수 없습니다. "설명 1"과 "설명 2"를 출력하고 싶습니다.VBA Collection을 Collection.add를 사용하여 사용자 지정 개체로 채울 수 없음

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 

새내기에 대한 도움을 주시면 감사하겠습니다.

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

1

약간 수정 된 양식 (Transaction 클래스 제외)은 저에게 적합합니다. 귀하의 거래 클래스에 오류가 있다고 생각합니다. 그것을위한 코드를 게시 할 수 있습니까?

+0

위의 설명에 더 많은 코드를 추가했습니다. 아마도 Transaction 클래스 대신 사용한 것을 말할 수 있습니까? 어쩌면 내가 끝내기 위해 코드를 작성하려고 할 수 있습니다. – Eric

관련 문제