Populate VBA Collection with Custom Objects using Collection.Add
You need to make a new instance of objTrans. What you're doing is setting DESC to Description 1, adding to the collection, then changing DESC to Description 2 (not making a new objTrans instance), and adding that same instance to the collection a second time. Here's how I would do it.
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