简单的筛选器
Listbox控件制作多选筛选器
应朋友的要求做了一个比较复杂的筛选器,在这里简化了一下,着了个实例。
这个小程序用VBA控制自动筛选,使用窗体控件Listbox实现多选,并把筛选结果复制到新表。
先看窗体:
窗体设计
窗体很简单几个按钮加一个Listbox,最主要的就是Listbox设置
Listbox
①多项选择设置:有三个选项,0单选,1多选,2扩展多选支持SHIFT&CTRL键。
②选项的表头:只有两个选项,TRUE使用,FALSE不使用。
③列表风格:有两个选项,0不显示选择框,1显示选择框,如果①是单选就显示圆点单选,否则显示方框多选。
④数据源:在表三里提前写好的筛选项目。
接下来是程序设计:
窗体代码部分:
窗体代码
这部分我用了个函数来处理多选,Multilistbox(),就这个简单的例子来说倒是没有必要,直接写在按钮事件里就行了,因为我处理的那个复杂筛选过程里,这个多选函数可以缩减工作量。
这里的HH,还有ComType是全局变量用来把从窗体取到数据传递到模块里。
模块代码:
模块代码
这段代码的重点在于:
With srng
.AutoFilter
If UBound(ComType) = 3 Then
.AutoFilter Field:=2
Else
.AutoFilter Field:=2, Criteria1:=ComType, Operator:=xlFilterValues
End If
End With
判断传递过来的ComType数组上限是不是3,来决定是全选,还是按照值筛选。
有了这个实例的经验,复杂的筛选过程也不难处理,就是多了些参数传递。