去除列表框数据源的重复值和空格
2016年8月10日
作者: 来源:
列表框的数据源引用工作表的数据时,如果工作表数据有重复值和空格,列表框也会出现重复值和空格。 为了在窗体显示时去除列表框的重复值和空格,可以使用Add方法,如下面的代码所示。 #001 Private Sub UserForm_Initialize() #002 On Error Resume Next #003 Dim Col As New Collection #004 Dim rng As Range, arr #005 Dim i As Integer #006 For Each rng In Range("A1:A" & [a65536].End(xlUp).Row) #007 If Trim(rng) <> "" Then #008 Col.Add rng, key:=CStr(rng) #009 End If #010 Next #011 ReDim arr(1 To Col.Count) #012 For i = 1 To Col.Count #013 arr(i) = Col(i) #014 Next #015 Me.ListBox1.List = arr #016 End Sub 代码解析: 窗体的初始化事件,去除列表框引用工作表数据中的重复值和空格。 第2行代码,错误处理语句,忽略错误。 第3行到第5行代码,声明变量类型。 第6行到第9行代码代码,在列表框引用的工作表数据中循环,把工作表数据源中的空格去除后使用Add方法添加到变量Col中。Add方法添加一个成员到Collection 对象,语法如下: object.Add item, key, before, after 参数object是必需的,一个有效的对象。 参数Item是必需的,任意类型的表达式,指定要添加到集合中的成员。 参数Key是可选的,唯一字符串表达式,指定可以使用的键字符串,代替位置索引来访问集合中的成员。 如果指定的key和集合中现有成员的key发生重复,则会导致错误发生。所以在第2行代码中使用错误处理语句,忽略错误,继续执行下一句代码,这样就将数据源中的重复值去除。 参数before是可选的,指定集合中的相对位置。在集合中将添加的成员放置在before参数识别的成员之前。如果参数是数值表达式,则before必须是介于 1 和集合Count属性值之间的值。如果参数是字符串表达式,则当添加一个被引用的成员到集合时,before 必须对应于指定的key值。可以指定before位置或after位置,但不能同时指定这两个位置。 参数after是可选的,指定集合中的相对位置。在集合中将添加的成员放置在After参数识别的成员之后。如果参数是数值表达式,则after必须是介于 1 和集合Count属性值之间的值;如果参数是字符串表达式,则当添加一个被引用的成员到集合时,after 必须对应于指定的key值。可以指定before位置或after位置,但不能同时指定这两个位置。 第10行到第14行代码,重新定义数组arr大小,把Col中数据赋给数组。 第15行代码,把数组arr复制到列表框中。 运行窗体,窗体中的列表框引用去除重复值和空格后的工作表数据。
阅读:2019
上一则:组合框和列表框添加列表项的方法
下一则:使用名称中的变量遍历窗体控件
|