Eri*_*ric 6 collections vba for-loop object
我不明白为什么Debug.Print n & " - " & objTrans2.DESC这段代码底部的行输出"描述2"两次.我希望它输出"描述1"和"描述2".
我试图通过sampleCollection.AddFor循环中的from 添加自定义对象(Transaction)有什么问题吗?如果我将字符串添加到集合而不是对象,则代码可以很好地工作.
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
Run Code Online (Sandbox Code Playgroud)
任何对newbee的帮助表示赞赏!
~~~~~~~~~~~~~~~~~~~~~~~
为了回应Mitch的回复,这里是Transaction类中的信息:
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
Run Code Online (Sandbox Code Playgroud)
我只在Excel中的VB编辑器中添加了属性声明...所以我复制/粘贴了那里列出的内容.
你需要创建一个objTrans的新实例.您正在做的是将DESC设置为Description 1,添加到集合,然后将DESC更改为Description 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13488 次 |
| 最近记录: |