我有下面的代码来填充一个列表框,因此我想从我的组合框中删除重复的内容。我不知道怎么做:
Private Sub CommandButton1_Click()
Dim ws_suivi As Worksheet
Set ws_suivi = ActiveWorkbook.Worksheets("suivi")
Fin_Liste_suivi = ws_suivi.Range("A65530").End(xlUp).Row
For i = 2 To Fin_Liste_suivi
UserForm_SDE.ComboBox_Type_Rapp.AddItem ws_suivi.Range("AD" & i)
Next
UserForm_SDE.Show
End Sub发布于 2020-07-20 13:22:44
通常值得搜索的是,是否存在一个用于VBA的库,以节省您重新发明轮子的费用。
VBA的一个特别麻烦之处在于,虽然我们有诸如集合和Scripting.Dictionaries这样有用的结构,但是在填充这些对象之后,没有一种简单的方法可以将信息输入到这些对象中,或者对数据进行大量的处理。
我有一个项目,它对数组/scripting.dictionariews进行了大量的处理,为了使我的生活更加轻松,我在C#中创建了一个名为Kvp (用于键值对)的VBA库,这有点像steriods上的Scripting.Dictionary。
您可以从这里下载Kvp对象的库、源代码和文档。
一旦添加了对Kvp库的引用,就可以以标准的方式声明Kvp对象。
Dim myKvp as Kvp
Set myKvp=New Kvp然后,可以在单个语句中从excel电子表格中添加1D范围。
myKvp.AddByIndexFromArray <excel range>.Value,它给出了长整数与单元格值的Kvp。
OP希望得到一个唯一值的列表。要用Kvp实现这一点,我们可以使用Mirror方法来创建唯一值的Kvp。
Dim myMirroredKvp as Kvp
set myMirroredKvp=myKvp.MirrorMirror方法返回两个项Kvp,其中项目0是唯一项的Kvp,而第一个项是找到项目的第一个键,第1项是原始密钥对值的Kvp,其中的值是重复的。
然后,可以使用GetKeys方法获得一个键数组。
Dim myUniqueValues as Variant
myUniqueValues = myMirroredKvp.GetItem(0).GetKeys还是希望将项目按相反顺序排序?
myUniqueValues - myMirroredKvp.GetItem(0).GetKeysDescending以上可缩短为
myUniqueValues = myKvp.Mirror.GetItem(0).GetKeysDescending我发现Kvp库很有用。我希望你能做到!!
发布于 2020-07-20 12:06:42
我发现:
Dim Valeur As String
Dim i As Integer
Dim j As Integer
'For each element in the list
For i = 0 To lst_ref.ListCount - 1
Valeur = Combobox.List(i)
For j = i + 1 To Combobox.ListCount - 1
'If the element exist, delete it
If Valeur = Combobox.List(j) Then
Call Combobox.RemoveItem(j)
End If
Next j
Next i它采取乞讨的组合框,并检查该值是否再次红色在组合框的末尾。
https://stackoverflow.com/questions/62994772
复制相似问题