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
,但是如果你使用第二个Criteria2
话Criteria1
和Criteria2
! 所以在这种情况下你不需要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的宝贵帮助!