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
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
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.
Add
ing 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
d.Exists(keyname)
and then use the d.Add keyname, value
methodd.Item(keyname) = value