簡單的篩選器
Listbox控制項製作多選篩選器
應朋友的要求做了一個比較複雜的篩選器, 在這裡簡化了一下, 著了個實例。
這個小程式用VBA控制自動篩選,
先看表單:
表單設計
表單很簡單幾個按鈕加一個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,
來決定是全選,
還是按照值篩選。
有了這個實例的經驗, 複雜的篩選過程也不難處理, 就是多了些參數傳遞。