如果语句自动过滤符合标准

我目前正在尝试创build一个If Statement ,只有当我的列表符合某个标准时才会运行。 但是,即使我的AutoFilter条件不包括Criteria1 4 ,macros现在仍然运行。

有谁知道如何纠正这个问题?

 Private Sub FilterAndPaste() Sheets(1).Select If ActiveSheet.Range("$A$3:$M$807").AutoFilter(Field:=2, Criteria1:="4") Then ' Insert the VLOOKUP formula into the given range ActiveSheet.Range("M3").Offset(1, 0).Select ActiveCell.FormulaR1C1 = _ "=VLOOKUP(RC[-9],'[TestFile.xlsm]Test'!C1:C13,12,0)" ActiveSheet.Range("M3").Offset(1, -1).Select Selection.End(xlDown).Offset(0, 1).Select Range(Selection, Selection.End(xlUp)).Select Selection.FillDown ActiveSheet.Range("A3").Offset(1, 0).Select ActiveSheet.Range(Selection, Selection.End(xlToRight).End(xlToRight).End(xlToRight).End(xlDown)).Select Selection.Copy Sheets("Example").Select ActiveSheet.Range("A4").Select ActiveSheet.Paste Rows("4:100").RowHeight = 12 Else End End If End Sub 

我看到两个问题,我会尽力回答。

Q1。 即使我的AutoFilter条件在Criteria1中不包含4,macros也可以运行。 有谁知道如何纠正这个问题?

那是因为你说的那一刻

If ActiveSheet.Range("$A$3:$M$807").AutoFilter(Field:=2, Criteria1:="4") Then

Excel将把一个自动filter,你的条件将是真实的。

Q2。 我目前正在尝试创build一个If语句,只有当我的列表符合某个标准时才会运行。

要检查标准使用这个

 With Sheets(1) If .AutoFilterMode = True And .FilterMode = True Then Debug.Print .Range("$A$3:$M$807").Parent.AutoFilter.Filters(2).Criteria1 End If End With 

像这样的东西

 With Sheets(1) If .AutoFilterMode = True And .FilterMode = True Then If .Range("$A$3:$M$807").Parent.AutoFilter.Filters(2).Criteria1 = "=4" Then ' '~~> Rest of the code ' End If End If End With