VBA错误:这个键已经与这个集合的元素相关联

我使用下面的代码在excel中创build一个范围的集合,然后用它来填充一个用户窗体上的列表框。 代码已经在两个单独的macros中工作得很好,但突然间都停止工作,并在标题中抛出错误。

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 

由于所有条目都是文本,所以我将下面的部分错误行注释掉了

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

这不会引发错误,但是Listbox不会填充唯一值,而是列出单元格区域中的所有项目。

我已经看过这个错误的其他职位,但无法解决。 任何人都可以build议如何解决,也有兴趣为什么可能已经停止工作。

在VBA项目中,选项 – >常规 – >错误陷印,检查Break On Unhandled Errors

🙂

我相信这个错误发生时,添加项目收集和密钥已被使用过。 .add(key,value)是与Dictionary对象相反的顺序

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

例如:

 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 

当然,我不能从你的代码中猜出.value ,但是我之前看到过这个错误。 你确定。 .Value是独一无二的吗?