首页 > 解决方案 > 从来自表的 ComboBox 中删除重复项 - Excel VBA

问题描述

我有一个组合框,它正在从表列中填充值。该列包含多行,包括具有重复值的行。我希望组合框只包含唯一值。

我用来填充组合框的代码:

Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "Data.xlsx")
Set sh = Worksheets("Sheet1")
Set tbl = sh.ListObjects("Table1")
combobox.list = tbl.ListColumns(1).DataBodyRange.Value

我尝试使用 RemoveDuplicates 但总是给出类型不匹配或需要对象错误。

标签: excelvbacomboboxexcel-tables

解决方案


请尝试下一个方法:

Sub ComboUniqueVal()
 Dim wb As Workbook, sh As Worksheet, tbl As ListObject, arr, El, dict As Object
 Set wb = Workbooks.Open(fileName:=ThisWorkbook.path & "Data.xlsx")
 Set sh = wb.Worksheets("Sheet1")
 Set tbl = sh.ListObjects("Table1")
 Set dict = CreateObject("Scripting.Dictionary")
 arr = tbl.ListColumns(1).DataBodyRange.Value 'for faster iteration
 For Each El In arr
    dict(El) = 1
 Next
 ComboBox.list = dict.Keys
End Sub

推荐阅读