我有以下简单的Excel工作表:
A B C D
1 Products Check
2 Product A OK
3 Product B OK
4 Product C OK
5 Product D OK
6 Product E OK
7
8
关于此数据,我想使用此VBA运行过滤器:
Sub Filter()
Sheet1.Range("$A$1:$B$1").AutoFilter _
Field:=Sheet1.Range("$B$1").Column, _
Criteria1:="Error"
End Sub
只要VBA
至少在Error
中出现一次,此Column B
即可正常工作。
但是,如您在上面的示例中看到的那样,条件Error
根本没有出现。
现在,当我运行VBA
时,将过滤器应用于Column B
并隐藏所有行,如下所示:
如何修改VBA
以便在criteria
中不存在过滤器Column
的情况下不能应用该过滤器?
答案 0 :(得分:0)
请尝试以下操作:
Sub testFilterError()
Dim strErr As String
strErr = "Error"
If Application.CountIf(Sheet1.Range("B1:B" & Sheet1.Range("B1").End(xlDown).Row), "Error") > 0 Then
Sheet1.Range("$A$1:$B$1").AutoFilter _
field:=Sheet1.Range("$B$1").Column, _
Criteria1:=strErr
Else
MsgBox "No """ & strErr & """ string in B:B column..."
End If
End Sub
该代码可以很容易地适应过滤时具有奇怪行为的其他单词...