只有Combobox(VBA)中的唯一logging

我有一个combobox,我从一个Excel工作表添加一些东西与一堆东西。 我只想要唯一的logging,我希望它们在切换到此页面时进行更新。 为此,我使用了以下代码:

Private Sub MultiPage1_Change() Dim Rand As Long Dim ws As Worksheet Set ws = Worksheets("BD_IR") Dim i As Long Rand = 3 Do While ws.Cells(Rand, 3).Value <> "" And Rand < 65536 If Me.repereche.ListCount <> 0 Then For i = 0 To (Me.repereche.ListCount) If Me.repereche.List(i, 0) <> Mid(ws.Cells(Rand, 3).Value, 4, 10) Then Me.Controls("repereche").AddItem Mid(ws.Cells(Rand, 3).Value, 4, 10) End If Next i ElseIf Me.repereche.ListCount = 0 Then Me.Controls("repereche").AddItem Mid(ws.Cells(Rand, 3).Value, 4, 10) End If Rand = Rand + 1 Loop 

这个代码的问题(我不知道问题在哪里?)是,每当我改变页面,我回到这个combobox的页面…它增加了更多(不唯一)和更多的项目。 我错在哪里?

试试这个代码:

 Dim ws As Worksheet Dim rCell As Range Set ws = Worksheets("BD_IR") '//Clear combobox repereche.Clear With CreateObject("Scripting.Dictionary") For Each rCell In ws.Range("C3", ws.Cells(Rows.Count, "C").End(xlUp)) If Not .exists(rCell.Value) Then .Add rCell.Value, Nothing End If Next rCell repereche.List = .keys End With 

我更喜欢这个集合,因为您可以检查字典中是否存在该值,而不是使用错误,并将整个集合一次添加到combobox中。