如果语句自动过滤符合标准
我目前正在尝试创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