如果Statement AutoFilter符合条件

时间:2015-09-15 17:23:35

标签: excel vba excel-vba

我目前正在尝试制作一个仅在我的列表符合特定条件时才会运行的If Statement。但是,即使我的AutoFilter条件在4中未包含Criteria1,现在宏也会运行。

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

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

1 个答案:

答案 0 :(得分:2)

我看到两个问题,我会尝试相应地回答它们。

  

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

那是因为你说的那一刻

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

Excel将自动过滤器,您的情况将成立。

  

Q2。我目前正在尝试制作一个仅在我的列表符合某个标准时才会运行的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