如果在自动过滤器中找不到条件,如何停止

时间:2019-08-01 15:16:37

标签: excel vba if-statement autofilter

我的代码基于只是数据的另一个文件收集信息,并将数据复制并粘贴到我的主文件夹中。我已经将Dim设置为范围B1,但是现在,如果在字段中找不到B1中的数据,我正在寻找它,只需将所有空白单元格复制到主文件夹中即可。

如果变量不在字段中,我将需要它停止

Sub Sheet01()
'
' Sheet01 Macro
'

'
Application.ScreenUpdating = False
Dim varField            As String
varField = Range("B1")
With ActiveSheet
  Range("Q3:AA2999").Select
    Selection.ClearContents
    Workbooks.Open Filename:= _
        "V:\Training\Share\Intraday Training Tracker\Agent Suite Raw        Data\AgentSuite - Current.xlsx"
Sheets("ActivityDetails").Select
ActiveSheet.Range("$A$1:$K$197561").AutoFilter Field:=4, Criteria1:=Array( _
    "CS", "Cons", "Medium", "MobOutbound", "NC", _
    "PMobile", "Personal Team", "ST", "SmBu", "Tech", _
    "Tech Support "), Operator:=xlFilterValues
ActiveSheet.Range("$A$1:$K$197561").AutoFilter Field:=10, Criteria1:=Array( _
    "Complete", "Eligible", "NotScheduled", "Processing", "Scheduled"), Operator:=xlFilterValues
ActiveSheet.Range("$A$1:$K$197561").AutoFilter Field:=11, Criteria1:="1"
ActiveSheet.Range("$A$1:$K$197561").AutoFilter Field:=1, Criteria1:=varField

当前我没有收到任何错误消息。

1 个答案:

答案 0 :(得分:0)

如果过滤器找不到任何值,则不会出现错误。我建议您在打开工作簿并选择工作表(建议您查找如何避免激活/选择)之后,执行Range.Find来确定varField是否存在。如果没有,则可以退出Sub或执行其他操作。

Set FindRng = Sheets("ActivityDetails").Columns(1).Find(varField)
If FindRng Is Nothing Then
    Exit Sub
End If