2017-01-09 21 views
3

我使用下面的代码从excel中的范围创建一个集合,然后用它来填充用户窗体上的列表框。代码在两个单独的宏中一直工作正常,但突然都停止工作,并在标题中抛出错误。VBA错误:此密钥已与此集合的元素相关联

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) 

这并不会引发错误,但列表框不具有唯一值填充,而不是它列出单元格范围内的所有项目。

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

回答

3

在VBA项目,选项 - >常规 - >错误捕获,检查Break On Unhandled Errors

:)

0

我相信将项目添加到收藏当钥匙被使用过,就会出现此错误。 。新增(键,值)是相反的顺序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是独一无二的吗?

+0

谢谢,但在我的情况下,这是错误捕获设置如上 –

相关问题