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
. Can anyone please tell the issue? I even used Cstr(activecell.value), Cstr(val)
as mentioned in one of the answer on similar issue.
Dim toprow As New Dictionary, Dictkey As Variant
Dim val As String
Range("A1").Activate
i = 0
Do Until i = ColLen
val = Chr(65 + i)
toprow.Add ActiveCell.value, val
i = i + 1
ActiveCell.Offset(0, 1).Activate
Loop
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.
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:
I was supposed to have this:
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 arewatching
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 thed.Add keyname, value
methodd.Item(keyname) = value