我正在使用 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
由于
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
我希望这有帮助。
我正在尝试做类似的事情,我有一个充满项目的数组列表,我想过滤掉它们。但是当我尝试 '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