我在尝试删除组合框中的重复项目时遇到的Unspecified Error
挣扎......
我首先使用RowSource
属性添加项目。
然后,我想使用RemoveItem
属性删除重复的值。
我得到的错误是在这一行生成的: CompteCOMBO.RemoveItem(j)
With CompteCOMBO
.Visible = True
.RowSource = "Missions!ComptesExistant"
End With
For i = 0 To CompteCOMBO.ListCount - 1
Valeur = CompteCOMBO.List(i)
For j = i + 1 To CompteCOMBO.ListCount - 1
If Valeur = CompteCOMBO.List(j) Then
CompteCOMBO.RemoveItem (j) 'ERROR HERE
End If
Next j
Next i
先谢谢你的帮助。
祝你有个美好的一天,
让
答案 0 :(得分:3)
以下是一些可疑项目:
同时迭代和删除通常需要很多关注。您可以轻松地结束错误,因为您正在尝试使用已删除的内容。
请注意此行For j = i + 1 To CompteCOMBO.ListCount - 1
。它最终将评估为For j = 5 to 4
。
在这种情况下不应该导致问题,但不要在此处使用括号:CompteCOMBO.RemoveItem (j)
我没有在组合框中删除重复项,而是首先过滤掉重复项。使用Dictionary
,它具有方便的Exists
功能。要使用它,您需要添加对 Microsoft Scripting Runtime 的引用。在工具>中找到它引用。像这样的东西会起作用:
第1单元
Sub ShowUserform()
With New UserForm1
.Show vbModal
End With
End Sub
<强> UserForm1 强>
Private Sub UserForm_Initialize()
Dim arr As Variant, v As Variant
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
arr = Array("a", "b", "a") 'or similarly:
'arr = Application.Transpose(ThisWorkbook.Worksheets("Missions").Range("CompetesExistant"))
For Each v In arr
If Not d.Exists(v) Then d.Add v, v
Next v
Me.ComboBox1.List = d.Keys
End Sub