excel - 从来自表的 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 但总是给出类型不匹配或需要对象错误。
解决方案
请尝试下一个方法:
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
推荐阅读
- reactjs - 如果使用 setState React.js,clearInterval 不起作用
- c# - 多个条码扫描器
- c# - 在 C# 中从没有固定长度的整数集合中获取所有可能的整数组合
- ios - `UIbutton.setImage` 和更改 `UIbutton.imageView` 有什么区别?
- hsqldb - 使用 HSQL 和 WHERE 语句时的问题
- spring-amqp - 消息丢失(发送到 spring-amqp 的消息不会发布到 rabbitmq)
- javascript - 如何识别Javascript中以String形式表示的数据类型?
- java - Java JPA 事务插入/更新不会立即插入/更新到数据库中
- javascript - MongoDB 试图通过 id 来处理两个表 - 无法做到这一点
- docker - Docker特定容器的不同卷路径