Excel 删除级联组合框VBA中的重复项
因此,我有一系列级联组合框,它们根据第一个框的值填充,如下所示: IDpre-填充>许可证号码>州>名称 我使用以下代码填充组合框:Excel 删除级联组合框VBA中的重复项,excel,vba,combobox,Excel,Vba,Combobox,因此,我有一系列级联组合框,它们根据第一个框的值填充,如下所示: IDpre-填充>许可证号码>州>名称 我使用以下代码填充组合框: If cmb_Project.ListIndex <> -1 Then cmb_State.Clear strSelected = cmb_Licence.Value LastRow = Worksheets("Entitlement Owners").Range("A" &
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
所以在组合框1中,我有:001002003004,这是正确的
当我在第一个框中选择004时,第二个框填充:SA,SA,这不是我想要的
我一直在试图遵循以下据称将删除重复的,但不允许我正在做的比较
有人知道如何从搜索范围中删除重复项吗?要在填充列表时删除重复项,可以使用字典,然后将组合的列表属性设置为字典的键。i、 e
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
我知道有问题,但你的描述有点混乱。您的代码在C列中搜索,但当我在与A列对应的第一个框中选择004时,您会说。同时设置rngCompany=。。。在您的代码中,这是无用的,因为您会立即为变量分配其他内容。我建议您检查并编辑该问题。@A.S.H-关于您的第一条评论,第一个选择存储在变量strselected中,A行中的搜索仅用于查找最后一个活动行。另外,我不明白我在哪里给rngcompany分配了不同的值?它在For循环中使用,然后用于与所选字符串进行比较?但004在a列中,不是吗?设置rngCompany=worksheetEntitlementOwners。范围B2:b&LastRow,后面紧跟着rngList中的每个rngCompany;第一个赋值是无用的。@A.S.H是的,但是当表单加载时,包含数字001002003等的b组合框1会被填充到代码的另一部分,因此它与此组合框无关,只需将所选值发送到前面标识的vaairable即可。感谢您提供,我只是想了解脚本字典是如何删除重复值的?@scb998该字典是一个集合对象,可确保其键的唯一性。无论何时引用现有密钥,都将分配相同的条目,不会重复任何密钥。查看更多信息。太棒了-非常感谢!因此,请澄清一下,如果键设置为0,那么它不会向键分配任何内容,即,我不会在组合框中看到一堆0?不幸的是,当它尝试设置字典键时,会抛出应用程序定义或对象定义的错误。单元格中是否存在NA或REF等错误?老实说,我看不出其他失败的原因,你需要用你的数据检查一下。在最坏的情况下,您可以在循环之前的下一个错误恢复中放置一些,并查看组合是否正确填充。
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