我正在研究vba宏。我试图使用字典。但它给error 457
调试器指向toprow.Add ActiveCell.value, val
。任何人都可以告诉这个问题吗?我甚至在类似问题的答案中提到了Cstr(activecell.value), Cstr(val)
。
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
答案 0 :(得分:20)
Add
个密钥。无意中你可以输入密钥,或你是watching
调试监视器的密钥,然后立即创建密钥。 (=如果您在字典中观看某个键,如果它尚不存在则会创建它。)
你必须
d.Exists(keyname)
上进行测试然后使用d.Add keyname, value
方法d.Item(keyname) = value
答案 1 :(得分:0)
我收到了同样的错误消息:“错误此密钥已与此集合的元素相关联”。在我的情况下,问题是我有这个:
'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
我应该有这个:
'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
也许你只需要仔细检查你的“Property Let”代码,看看你是否为你班级中私有的变量使用了适当的名称。
答案 2 :(得分:-1)
如果你想要做的就是跳过抛出此错误的记录,你也可以添加一些非常基本的错误处理。我只是将下面的行直接插入到为我生成此错误的那一行的上方,现在它很高兴地移动,忽略了用于抛出此错误的重复键。
On Error Resume Next