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

如何一次性移除Visual Basic列表框中的重复数字

移除ListBox中重复数字的两种实用方案

这里有两种靠谱的方法帮你一次性清理ListBox1里的重复数字,根据你的Visual Basic版本来选就好:

方法1:利用Collection去重(兼容VB6和VB.NET)

这个方法借助VB原生的Collection特性——它不允许重复的键值,刚好可以用来过滤重复项:

Private Sub RemoveDuplicatesFromListBox()
    ' 创建一个Collection存储唯一值,靠键的唯一性过滤重复
    Dim uniqueItems As New Collection
    Dim currentItem As Variant
    
    ' 开启错误捕获,遇到重复键时自动跳过
    On Error Resume Next
    For Each currentItem In ListBox1.Items
        ' 把当前项转成字符串作为键,确保重复项会触发错误被跳过
        uniqueItems.Add currentItem, Key:=CStr(currentItem)
    Next
    ' 恢复默认错误处理
    On Error GoTo 0
    
    ' 清空原列表,再把唯一项加回去
    ListBox1.Clear
    For Each currentItem In uniqueItems
        ListBox1.AddItem currentItem
    Next
End Sub

说明:On Error Resume Next是为了忽略添加重复键时的报错,这样重复项会被自动跳过,不会加入到Collection里。最后再把去重后的内容重新填充到ListBox即可。

方法2:用LINQ快速去重(仅VB.NET)

如果你用的是VB.NET,LINQ的Distinct()方法能让代码更简洁:

' 记得先导入LINQ命名空间
' Imports System.Linq

Private Sub RemoveDuplicatesFromListBox()
    ' 将ListBox项转为可查询集合,用Distinct去重
    Dim uniqueItems = ListBox1.Items.Cast(Of Object)().Distinct().ToList()
    
    ' 清空原列表并添加去重后的项
    ListBox1.Items.Clear()
    ListBox1.Items.AddRange(uniqueItems.ToArray())
End Sub

说明:Cast(Of Object)是因为ListBox的Items集合是非泛型的,需要转成LINQ能处理的泛型集合;Distinct()会自动帮你筛选出唯一值,最后再把结果加回ListBox。

注意事项

  • 如果你的ListBox里不是单纯的数字,而是自定义对象,那需要重写对象的Equals和GetHashCode方法,这样Distinct()或者Collection才能正确判断重复项。
  • 两种方法都会保留第一次出现的重复项,后续的重复项会被移除。

内容的提问来源于stack exchange,提问作者Ruby_3.7

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:55:05