删除级联组合框VB​​A中的重复项

时间:2017-03-19 22:02:06

标签: excel vba combobox

所以我有一系列级联组合框,根据第一个框的值填充,如下所示:

ID(预先填充)>许可证号码>状态>名称

我使用以下代码填充组合框:

If cmb_Project.ListIndex <> -1 Then
            cmb_State.Clear
           strSelected = cmb_Licence.Value

           LastRow = Worksheets("Entitlement Owners").Range("A" & Rows.Count).End(xlUp).row

           Set rngList = Worksheets("Entitlement Owners").Range("c2:c" & LastRow)
           Set rngCompany = Worksheets("Entitlement Owners").Range("b2:b" & LastRow)

           For Each rngCompany In rngList

                 If rngCompany.Value = strSelected Then

                      cmb_State.AddItem rngCompany.Offset(, -1)

                 End If

           Next rngCompany

      End If
下面的

是我拥有的数据的示例布局

001      SA 763 Name 1
002     SA  547 Name 2
004     SA  2250    Name 3
004     SA  2250    Name 4

所以在Combobox 1中,我有:001,002,003,004(这是正确的)

当我在第一个框中选择004时,第二个框填充:SA,SA,这不是我想要的。

我一直在尝试遵循以下example,据称这会删除重复内容,但不允许我正在进行的比较。

是否有人知道我如何从搜索范围中删除重复项?

1 个答案:

答案 0 :(得分:2)

要在填充列表时删除重复项,可以使用字典,然后将组合的列表属性设置为字典的键。即。

Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
For Each rngCompany In rngList
    If rngCompany.value = strSelected Then dict(rngCompany.Offset(, -1).text) = 0 ' add key to dict
Next rngCompany
cmb_State.List = dict.Keys