You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VBA中对combo Box(组合框)数据进行去重筛选

解决方案

可以通过VBA的字典对象实现组合框数据自动去重,利用字典Key不可重复的特性,无需额外写重复判断逻辑,执行效率也远高于手动遍历去重,以下是修改后的完整代码:

Private Sub UserForm_Activate()
    Dim myrng As Range
    Dim cl As Range
    Dim sh As Worksheet
    Dim objDict As Object
    ' 创建字典对象,后期绑定无需手动引用库
    Set objDict = CreateObject("Scripting.Dictionary")
    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 <> "" And Not objDict.exists(cl.Value) Then
                objDict.Add cl.Value, ""
            End If
        Next cl
        ' 直接将字典的所有Key批量赋值给组合框
        .List = objDict.keys
    End With
    ' 释放对象
    Set objDict = Nothing
    Set sh = Nothing
    Set myrng = Nothing
End Sub

代码优化说明

  • 采用后期绑定创建字典对象,不需要手动在VBA编辑器中添加「Microsoft Scripting Runtime」引用,可直接运行
  • 遍历单元格时仅添加未出现过的非空值,自动过滤重复项
  • 最终通过List属性批量赋值,比循环AddItem执行速度更快,适配最大10万行的数据源场景

组合框列表效果示意图

内容的提问来源于stack exchange,提问作者NAITIK JAIN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:45:04