尝试在自动过滤器中使用“不等于”<> 的条件变量,但无法使其正常工作

问题描述 投票:0回答:2

我正在使用 Excel VBA 使用“不等于”表达式过滤列表。如果我使用

Criteria1:="<>Bob"
,代码运行完美,但如果我将“Bob”更改为变量,代码不会运行。

这有效:

ActiveSheet.ListObjects("Rpt_AM_04_Sales_ShipTo").Range.AutoFilter Field:=4, _
    Criteria1:="<>Bob", Operator:=xlFilterValues

这不起作用:

Dim Test_Criteria As String
Test_Criteria = "Bob"
ActiveSheet.ListObjects("Rpt_AM_04_Sales_ShipTo").Range.AutoFilter Field:=4, _
    Criteria1:<>Test_Criteria, Operator:=xlFilterValues

我希望代码返回一个列表,其中包含除 Bob 之外的所有人。 相反,我只是在输入代码时收到一条错误消息:

Compile error
Expected: named parameter
excel vba autofilter
2个回答
1
投票

语法不正确

由于

incorrect syntax
您在其中指定条件,因此代码不起作用。试试这个:

改变这个:

Criteria1:<>Test_Criteria

对此:

Criteria1:"<>" & Test_Criteria

完整代码:

Dim Test_Criteria As String
Test_Criteria = "Bob"
ActiveSheet.ListObjects("Rpt_AM_04_Sales_ShipTo").Range.AutoFilter Field:=4, _
     Criteria1:="<>" & Test_Criteria, Operator:=xlFilterValues

我希望这有帮助。


0
投票

我正在尝试做类似的事情,我有一个充满项目的数组列表,我想过滤掉它们。但是当我尝试 'Criteriaxl:="<>" & arrList' 时,我收到类型不匹配错误,代码如下:

Dim idRange As Range
  Set idRange = trinWks.Range("A1:A" & lastRow(trinWks, 1))
  Dim arrList() As String, lngCnt As Long
  
  lngCnt = 0

  For Each idCell In idRange
    If Trim(idCell.Value) = vbNullString Then GoTo SkipEntry:
    ReDim Preserve arrList(lngCnt)
    arrList(lngCnt) = idCell.Value
    lngCnt = lngCnt + 1
SkipEntry:
  Next idCell
  
  On Error Resume Next
  finalTbl.Range.AutoFilter Field:=2, Criteria1:="<>" & arrList, Operator:=xlFilterValues
  On Error GoTo 0
© www.soinside.com 2019 - 2024. All rights reserved.