Error This key is already associated with an element of this collection

前端 未结 3 1484
孤城傲影
孤城傲影 2021-01-02 04:10

I am working on vba macros. I was trying to use a dictionary. But it is giving error 457 with debugger pointing to toprow.Add ActiveCell.value, val

相关标签:
3条回答
  • 2021-01-02 04:48

    You can also add some very basic error handling, if all you wish to do is skip over the record throwing this error. I simply inserted the below line immediately above the one which was generating this error for me, and now it happily moves along, ignoring duplicate keys which used to throw this error.

    On Error Resume Next
    
    0 讨论(0)
  • 2021-01-02 04:54

    I was getting the same error message: "Error This key is already associated with an element of this collection". In my case, the problem was that I had this:

    'assign values to properties
    Property Let EmployeeName(Valor As String)
        m_employeename = Valor
    End Property
    Property Let EmployeeID(Valor As String)
        m_employeename = Valor
    End Property
    

    I was supposed to have this:

    'assign values to properties
    Property Let EmployeeName(Valor As String)
        m_employeename = Valor
    End Property
    Property Let EmployeeID(Valor As String)
        m_employeeid = Valor
    End Property
    

    Maybe you just have to double check your "Property Let" code to see if you are using appropriate names for those variables that are private in your class.

    0 讨论(0)
  • 2021-01-02 04:57

    Adding keys with dictionaries is only possible when a key does not already exist. Accidentally you could entered the key before, or you are watching the key with the debug watcher, creating the key instanteneously. (= If you watch a certain key in a dictionary it gets created if it doesn't already exist).

    You have to

    • make sure you are not watching the key with the debugger
    • create unique entries by testing on d.Exists(keyname) and then use the d.Add keyname, value method
    • alternatively you can default to overwrite existing keys by using d.Item(keyname) = value
    0 讨论(0)
提交回复
热议问题