Errore VBA: questa chiave è già associata a un elemento di questa raccolta

Utilizzo il codice qui sotto per effettuare una raccolta da un range in excel che viene quindi utilizzato per popolare una casella di riepilogo in una forma di utente. Il codice funziona bene per mesi in due macro separate, ma all'improvviso entrambi hanno smesso di funzionare e di lanciare errori nel titolo.

Private Sub UserForm_Initialize() Dim ws As Worksheet Dim LR As Long Dim cell As Range Dim List As New Collection Dim Item As Variant Set ws = Worksheets("ExpenseCATs") With ws LR = .Cells(.Rows.Count, 1).End(xlUp).Row For Each cell In .Range("A2:A" & LR) With cell On Error Resume Next List.Add .Text, CStr(.Value) <---------- Error On Error GoTo 0 End With Next cell For Each Item In List EXPListBox1.AddItem Item Next Item End With 

Poiché tutte le voci sono di text, ho commentato una parte della row di errore come segue

 List.Add .Text ', CStr(.Value) 

Questo non getta un errore, ma la casella di riepilogo non popola con valori univoche, elenca invece tutti gli elementi dell'intervallo di celle.

Ho esaminato altri post su questo errore ma non sono in grado di risolvere. Può qualcuno consigliare come risolvere, anche interessato al motivo per cui ha smesso di lavorare.

Solutions Collecting From Web of "Errore VBA: questa chiave è già associata a un elemento di questa raccolta"

Nel progetto VBA, Opzioni -> Generale -> Trapping di errori, seleziona Errore Break On Unhandled Errors

🙂

Credo che questo errore si verifichi quando si aggiungono elementi alla raccolta e la chiave è stata utilizzata prima. .add (chiave, valore) è l'ordine inverso all'object Dictionary

 Collection.add(item [,Key]) Dictionary.add(Key, item) 

per esempio:

 Dim c As New Collection c.add "Value1", Key:="one" c.add "Value2", Key:="two" c.add "Value3", Key:="one" '<----- this is where the error occurs because of duplicate key 

Naturalmente non riesco a indovinare il .value del tuo codice, ma ho visto questo errore prima. Sei sicuro che il .Value è univoco?