J'essaie d'ajouter un objet personnalisé (transaction) via le Le code fonctionne si j'ajoute des chaînes à la collection au lieu d'objets. le Voici les informations de la classe de transaction: P> samplecollection.add code> de l'intérieur A pour boucle.
débog.print n & "-" & objtrans2.desc code> ligne au bas de ce code est sortie "Description 2" deux fois. Je veux que cela produise "Description 1" et "Description 2". P>
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
4 Réponses :
Un formulaire légèrement modifié (sans la classe de transaction) fonctionne comme prévu pour moi. Je crois qu'il y a une erreur est votre classe de transaction. Pouvez-vous poster le code pour cela? P>
Mitch, j'ai ajouté un autre code à ma description ci-dessus. Peut-être que vous pouvez me dire ce que vous avez utilisé à la place de ma classe de transaction? Peut-être que je peux essayer d'obtenir votre code pour travailler à ma fin.
Vous devez faire une nouvelle instance d'objtrans. Ce que vous faites est de définir Desc à la description 1, ajoutant à la collection, puis à la modification de Desc à la description 2 (ne faisant pas une nouvelle instance Objtrans) et en ajoutant ce même exemple à la collection une seconde fois. Voici comment je le ferais.
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
Dick, ça a fonctionné !!! Merci! J'ai passé des heures à essayer de comprendre cela. Merci pour l'explication et pour le code nettoyé ... J'aime voir comment d'autres personnes mettraient à jour mon code.
La version plus simple aurait été de vous définir N = 0 à Samplecollection.count, car les index d'un tableau démarre avec 0 et votre n commencent par 1 ...
For n = 0 To sampleCollection.Count Set objTrans = sampleCollection.Item(n) Debug.Print n & " - " & objTrans.DESC Next n
ne peut pas renseigner la collection VBA avec des objets personnalisés à l'aide de Collection.add P>
code est la sortie "Description 2" deux fois p>
En termes simples de base, il est toujours préférable de faire: p>
xxx pré> et non: p>
xxx pré> comme le Ce dernier causera des problèmes très subtils et non apparents, et ne peut générer aucune erreur, comme je l'ai récemment découvert. P> blockQquote>