2010-07-11 5 views
6

का उपयोग कर कस्टम ऑब्जेक्ट्स के साथ वीबीए संग्रह को पॉप्युलेट नहीं कर सकता है। मुझे समझ में नहीं आता कि इस कोड के निचले हिस्से में Debug.Print n & " - " & objTrans2.DESC लाइन क्यों दो बार "विवरण 2" आउटपुट कर रही है। मैं इसे "विवरण 1" और "विवरण 2" आउटपुट करना चाहता हूं।संग्रह.एड

क्या कुछ गलत है कि मैं 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 
:

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

मिच की प्रतिक्रिया के जवाब में, यहां लेन-देन कक्षा में जानकारी दी गई है

मैंने केवल एक्सेल में वीबी संपादक को संपत्ति घोषणाएं जोड़ दीं ... इसलिए मैंने वहां सूचीबद्ध की गई प्रतिलिपि/चिपकाया।

उत्तर

6

आपको objTrans का एक नया उदाहरण बनाने की आवश्यकता है। आप जो कर रहे हैं वह विवरण 1 में डीईएससी सेट कर रहा है, संग्रह में जोड़ रहा है, फिर विवरण 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

थोड़ा संशोधित रूप (लेनदेन वर्ग के बिना) मेरे लिए लक्षित है। मेरा मानना ​​है कि आपकी लेनदेन कक्षा में कोई त्रुटि है। क्या आप इसके लिए कोड पोस्ट कर सकते हैं?

+0

मिच, मैंने उपरोक्त मेरे विवरण में कुछ और कोड जोड़ा। शायद आप मुझे बता सकते हैं कि आपने मेरे लेनदेन वर्ग के स्थान पर क्या उपयोग किया था? शायद मैं अपने कोड को अपने अंत में काम करने की कोशिश कर सकता हूं। – Eric