![](/img/trans.png)
[英]Run-time error 1004 with Range.Autofilter in Excel VBA 2016
[英]Excel VBA AutoFilter on user selection run-time error 1004
我有一个包含2张(“内容”和“文件夹”)的Excel 2010工作簿。
此工作簿的目的是按供应商或参考编号跟踪不同的工作,前端(内容页面)易于使用,仅包含按钮和搜索框(实际上并不是单独的)框,但只是用户输入的内容表(以下称为J8)的单元格J8的内容。
按钮将按供应商类型进行过滤(并且工作完全正常),但这是我遇到问题的用户选择。
我的宏代码是:
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
按下“查找”按钮时,应该读取J8,然后选择“文件夹”表并过滤结果以显示包含J8中文本的B列中的每个条目。
这工作正常。 但是,现在当我尝试使用此宏时,我得到了一个1004运行时错误,其中包含“应用程序定义或对象定义的错误”消息。
有人可以帮忙吗?
编辑:
包含按照以下格式分配的宏的“包含”按钮:
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
还有一个resest按钮,用于清除过滤器并返回到“内容”表:
Sub Reset_Click()
ActiveSheet.ShowAllData
Sheets("Contents").Select
End Sub
通常,您需要激活要使用AutoFilter
的范围内的单元格。
此外,当您尝试将AutoFilter与通配符( *
或?
)或数学测试一起使用时,您需要在条件字符串的开头添加=
,所以
userSelect = "=*" & Range("J8") & "*"
然后,它不是Criteria
,而是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
而你在xlAnd
也有一个拼写错误,它是x1And
;)
对于任何有兴趣的人来说,问题最终都存在于问题中:
ActiveSheet.Range("$B$1:$B$5000").AutoFilter Field:=2, Criteria1:=userSelect
由于代码只过滤了B列,因此Field值需要设置为“1”而不是原来的“2”
感谢@ R3uK的宝贵帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.