只有Combobox(VBA)中的唯一记录

And*_*Ion 2 excel vba

我有一个组合框,我在Excel工作表中添加了一些东西.我只想要唯一的记录,我希望在切换到此页面时更新它们.为此我使用了以下代码:

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
Run Code Online (Sandbox Code Playgroud)

这段代码的问题(我不知道问题出在哪里?)是每当我更改页面时,我回到这个组合框所在的页面......它会添加更多(不唯一)和更多项目.我哪里错了?

Rea*_*idy 8

试试这段代码:

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
Run Code Online (Sandbox Code Playgroud)

我更喜欢这个集合,因为你可以检查字典中是否存在值而不是使用错误并立即将整个集合添加到组合框中.