Non ho controllato bene tutto il codice perchè i nomi delle variabili sono troppo simili e fanno venire il mal di testa
ma credo che il problema sia che con
For I = 0 To MapRowApp.Size -1
Dim sSelRowA As RowList
sSelRowA.Initialize
sSelRowA = MapRowApp.Get(I)
MapRowList.Put(I, sSelRowA)
Next
sSelRowA diventa un riferimento del Type contenuto in MapRowApp.Get(I), non ne diventa una copia a sè stante.
Quindi è come lavorare sempre con il Type originario.
MapRowList conterrà i riferimenti ai Type di MapRowApp, quindi ogni modifica agirà su entrambi perchè puntano allo stesso oggetto (Type).
Puoi provare ad aggiungere una sub tipo questa
Private Sub CopyType (source As RowList, target As RowList)
target.PrgPie = source.PrgPie
target.PrgAgg = source.PrgAgg
target.sCod = source.sCod
target.sDes = source.sDes
target.nQta = source.nQta
target.nTot = source.nTot
target.bAct = source.bAct
target.sKey = source.sKey
e dove ti serve una nuova copia di un type, indipendente, chiama
[CODE=b4x]CopyType(MapRowApp.Get(I), sSelRowA)
In questo modo sSelRowA sarà uguale come contenuto al type in MapRowApp.Get(I), ed eventuali modifiche a sSelRowA agiranno solo su di esso.
Lascio a te il divertimento di fare tutte le chiamate corrette con i nomi variabili che per te probabilmente sono più familiari.
Sperando di non aver fatto casino, fai sapere se risolvi.
Il ciclo diventerebbe così
For I = 0 To MapRowApp.Size -1
Dim sSelRowA As RowList
sSelRowA.Initialize
CopyType(MapRowApp.Get(I), sSelRowA)
MapRowList.Put(I, sSelRowA)
Next
Magari ci sono soluzioni migliori ma ora mi è venuta così.