如何过滤组合框中的数据 vba
How to filter data in combo Box vba
我遇到了这个问题,我必须将数据过滤到组合框中。该列表应该只有唯一的记录。
这是将记录填充到组合框中的代码:
Private Sub UserForm_Activate()
Dim myrng As Range
Dim cl As Range
Dim sh As Worksheet
Set sh = Worksheets("Product_Master")
Set myrng = sh.Range("C2:C100000")
With Me.comBox_Purchase_Product
.Clear
For Each cl In myrng.Cells
If cl.Value <> "" Then
.AddItem cl.Value
End If
Next cl
End With
End sub
这是我得到的产品...现在我只想要唯一记录并删除所有重复项。
提前致谢。
首先将所有值添加到 dictionary 中。添加时,使用 myDictionary.Exists
测试唯一性。然后从字典中抓取唯一列表以加载到组合框列表中。
Private Sub UserForm_Activate()
Dim sh As Worksheet
Set sh = Worksheets("Product_Master")
Dim myrng As Range
Set myrng = sh.Range("C2:C100000")
Dim Dict As Object
Set Dict = CreateObject("Scripting.Dictionary")
Dim cl As Range
For Each cl In myrng.Cells
If cl.Value <> "" And Not Dict.exists(cl.Value) Then
Dict.Add cl.Value, 0
End If
Next cl
Me.comBox_Purchase_Product.List = Dict.Keys
End Sub
我建议将事件从 UserForm_Activate
更改为 UserForm_Initialize
,因为这样可以避免多次重新 运行 脚本,但它在两个事件中都有效。
我遇到了这个问题,我必须将数据过滤到组合框中。该列表应该只有唯一的记录。 这是将记录填充到组合框中的代码:
Private Sub UserForm_Activate()
Dim myrng As Range
Dim cl As Range
Dim sh As Worksheet
Set sh = Worksheets("Product_Master")
Set myrng = sh.Range("C2:C100000")
With Me.comBox_Purchase_Product
.Clear
For Each cl In myrng.Cells
If cl.Value <> "" Then
.AddItem cl.Value
End If
Next cl
End With
End sub
这是我得到的产品...现在我只想要唯一记录并删除所有重复项。
提前致谢。
首先将所有值添加到 dictionary 中。添加时,使用 myDictionary.Exists
测试唯一性。然后从字典中抓取唯一列表以加载到组合框列表中。
Private Sub UserForm_Activate()
Dim sh As Worksheet
Set sh = Worksheets("Product_Master")
Dim myrng As Range
Set myrng = sh.Range("C2:C100000")
Dim Dict As Object
Set Dict = CreateObject("Scripting.Dictionary")
Dim cl As Range
For Each cl In myrng.Cells
If cl.Value <> "" And Not Dict.exists(cl.Value) Then
Dict.Add cl.Value, 0
End If
Next cl
Me.comBox_Purchase_Product.List = Dict.Keys
End Sub
我建议将事件从 UserForm_Activate
更改为 UserForm_Initialize
,因为这样可以避免多次重新 运行 脚本,但它在两个事件中都有效。