我使用下面的代码从excel中的范围创建一个集合,然后用于填充userform上的列表框。代码在两个单独的宏中已经工作好几个月,但突然两个都停止工作并在标题中抛出错误。
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)
这不会引发错误,但列表框不会填充唯一值,而是列出单元格区域中的所有项目。
我已查看过有关此错误的其他帖子,但无法解决。任何人都可以建议如何解决,也对为什么可能已经停止工作感兴趣。
答案 0 :(得分:3)
在VBA项目中,选项 - &gt;常规 - &gt;错误捕获,请检查Break On Unhandled Errors
:)
答案 1 :(得分:0)
我相信在将项目添加到集合并且之前已使用过密钥时会发生此错误。 .add(key,value)与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
是唯一的吗?