Excel VBA自动筛选用户select运行时错误1004

我有一个包含2张(“内容”和“文件夹”)的Excel 2010工作簿。

本工作手册的目的是跟踪供应商或参考编号的不同工作,其前端(内容页面)使用简单,仅包含button和search框(其实不是一个单独的框,而只是用户键入的内容表(以下简称J8)的单元格J8的内容。

button将按供应商types进行过滤(并且完美地工作),但这是我遇到的用户select问题。

我的这个macros的代码是:

Sub Find_Click() Dim userSelect As String userSelect = "*" & Range("J8") & "*" Sheets("Folders").Select ActiveSheet.Range("$B$1:$B$5000").AutoFilter Field:=2, Criteria:=userSelect, Operator:=x1And End Sub 

按下“查找”button时,应该读取J8,然后select“文件夹”工作表并筛选结果以显示包含J8中文本的B列中的每个条目。

这工作正常。 但是,现在当我尝试使用这个macros时,我得到了一个1004运行时错误,并且出现了“应用程序定义或对象定义的错误”消息。

任何人都可以请帮忙?

编辑:

包含按照以下格式分配macros的包含button:

 Sub Button1_Click() Sheets("Folders").Select ActiveSheet.Range("$A$1:$A$5000").AutoFilter Field:=1, Criteria1:= _ "Criteria" Set r = Range(Range("A3"), Range("A3").End(xlDown)) j = WorksheetFunction.CountA(r.Cells.SpecialCells(xlCellTypeVisible)) 'MsgBox j If j = 0 Then MsgBox "There is currently no work relating to Criteria" ActiveSheet.AutoFilterMode = False ActiveSheet.Range("A3").Select Sheets("Contents").Select End If End Sub 

还有一个清除filter并返回到内容表的重新启动button:

 Sub Reset_Click() ActiveSheet.ShowAllData Sheets("Contents").Select End Sub 

通常,您需要激活您要使用AutoFilter的范围内的单元格。

此外,当您尝试使用带有通配符( *? )的AutoFilter或mathtesting时,您需要在条件string的开头添加= ,所以

 userSelect = "=*" & Range("J8") & "*" 

那么,这不是Criteria ,但是如果你使用第二个Criteria2Criteria1Criteria2 ! 所以在这种情况下你不需要Operator

最后,使用ActiveSheet.Range("$B$1:$B$5000").AutoFilter Field:=2 ,您要求代码在只有一列的范围的第二列进行过滤!

所以如果你想过滤col B,只要将Field:=2改为Field:=1


这是工作代码:

 Sub Find_Click() Dim userSelect As String Dim wS as Worksheet userSelect = "=*" & Range("J8") & "*" Set wS = Sheets("Folders") wS.Activate wS.Range("B1").Activate If Not wS.AutoFilterMode Then wS.AutoFilterMode = True wS.Range("$B$1:$B$5000").AutoFilter Field:=1, Criteria1:=userSelect End Sub 

而且你还有一个错字,而且是x1And

对于任何有兴趣的人来说,这个问题最终都会被排除在外:

 ActiveSheet.Range("$B$1:$B$5000").AutoFilter Field:=2, Criteria1:=userSelect 

由于代码仅对列B进行了筛选,因此字段值需要设置为“1”而不是我原来的“2”

感谢@ R3uK的宝贵帮助!