使用AutoFilter排除值时,我收到一条错误消息

时间:2017-01-07 04:34:05

标签: vba excel-vba excel

我希望使用AutoFilter排除七个不同的值。

我尝试了以下代码,但它出错了:

.AutoFilter Field:=12, Criteria1:= _
     "<>BESTPAYMENTS", Operator:=xlAnd, Criteria2:="<>IGL", Operator:=xlAnd, Criteria3:="<>MGBILLPAY", Operator:=xlAnd, Criteria4:="<>NDPL", Operator:=xlAnd, Criteria5:="<>RBPAYMENTS", Operator:=xlAnd, Criteria6:="<>TABCAB", Operator:=xlAnd, Criteria7:="<>TDNPAY"

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

AutoFilter方法仅支持两个Criteria

包含选择多个值非常容易,例如做类似的事情:

.AutoFilter Field:=12, _
            Criteria1:=Array("first_value", _
                             "another_value", _
                             "something else", _
                             "and yet another one"), _
            Operator:=xlFilterValues

但是,排除值要困难得多,因为数组中元素之间使用了隐式Or

我相信您需要使用类似于以下内容的代码来实现您的目标:

Dim r As Range
For Each r In .Columns(12).Cells
    If r.Row <> .Row Then ' to avoid processing the header row
        Select Case r.Value
            Case "BESTPAYMENTS", _
                 "IGL", _
                 "MGBILLPAY", _
                 "NDPL", _
                 "RBPAYMENTS", _
                 "TABCAB", _
                 "TDNPAY"
                r.EntireRow.Hidden = True
            Case Else
                r.EntireRow.Hidden = False
        End Select
    End If
Next

不幸的是,这只是隐藏和取消隐藏行,而不是应用真正的过滤器,但它可能是您所希望的最好的。