VBA复选框用于定义自动筛选条件

时间:2014-06-03 11:00:05

标签: excel vba checkbox userform autofilter

我查看过很多帖子,但似乎无法找到答案。基本上我在excel中有一个表,应用了自动过滤器(我通过按ctr + L创建了表),我想在userform中选中复选框来定义自动过滤器中的哪个复选框被选中。录制代码时,我得到:

Sub Testing1()
    ActiveSheet.ListObjects("Table96").Range.AutoFilter Field:=1, Criteria1:= _
        Array("company1", "company2", "company3"), Operator:=xlFilterValues
'then selecting one additional company
    ActiveSheet.ListObjects("Table96").Range.AutoFilter Field:=1, Criteria1:= _
        Array("company1", "company2", "company3", "company 5"), Operator:=xlFilterValues
End Sub

我想要做的是能够使用复选框添加/删除该阵列中的公司。如果excel有选项,我希望每个公司关联的每个复选框都将该公司添加到条件数组中。如果做不到这一点,我希望能够捕获该列的现有标准,并将其与新标准结合使用。

另一个可能的解决方案是在表单关闭时在所有复选框上运行循环,并以某种方式使用选中复选框的结果来定义范围。

非常感谢任何帮助!

我正在使用Excel 2010

1 个答案:

答案 0 :(得分:0)

多选列表框的示例代码:

Dim n                           As Long
Dim counter                     As Long
Dim asSelected()                As String
Dim lo                          As ListObject

Set lo = ActiveSheet.ListObjects("Table96")
With Me.ListBox1

    For n = 1 To .ListCount
        If .Selected(n - 1) Then
            ReDim Preserve asSelected(counter)
            asSelected(counter) = .List(n - 1)
            counter = counter + 1
        End If
    Next n
    If counter > 0 Then lo.Range.AutoFilter Field:=1, Criteria1:=asSelected, Operator:=xlFilterValues
End With