使用多个条件过滤值的代码

时间:2016-04-07 07:31:23

标签: excel vba excel-vba autofilter

我正在制作一个小程序。在主表上,有两个组合框。

我想要做的是,如果我从每个组合框中选择值,它将过滤数据。但我面临一个小问题。我想在两个组合框中都有一个ALL值,并且在选择该值时,它不应该过滤该列。

到目前为止,我的代码是这样的:

Sub submit()

    Dim ws As Worksheet, tbl As ListObject, rng As Range

    Set ws = Sheets("Graphical Summary")
    Set tbl = ws.ListObjects("Table5")
    Set rng = tbl.DataBodyRange

    With tbl
        .Range.AutoFilter Field:=1
        .Range.AutoFilter Field:=3
    End With

        With rng
            If Sheets("Graphical Summary").ComboBox1.Value = "All"     Then .AutoFilter Field:=2, Criteria1:=Sheets("Graphical Summary").ComboBox2.Value
            If Sheets("Graphical Summary").ComboBox1.Value <> vbNullString Then .AutoFilter Field:=1, Criteria1:=Sheets("Graphical Summary").ComboBox1.Value
            If Sheets("Graphical Summary").ComboBox2.Value <> vbNullString Then .AutoFilter Field:=2, Criteria1:=Sheets("Graphical Summary").ComboBox2.Value
        End With
End Sub

1 个答案:

答案 0 :(得分:0)

目前,如果ComboBox1是零长度字符串,则不在字段1上设置过滤器;扩展该条件以包括所有

With rng
    If ws.ComboBox1.Value <> vbNullString And
       ws.ComboBox1.Value <> "All" Then _
        .AutoFilter Field:=1, Criteria1:=ws.ComboBox1.Value
    If ws.ComboBox2.Value <> vbNullString Then _
        .AutoFilter Field:=2, Criteria1:=ws.ComboBox2.Value
End With

您已宣布 ws 并将其分配给表格(&#34;图形摘要&#34;);你也可以使用它。