我查看过很多帖子,但似乎无法找到答案。基本上我在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
答案 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