我目前正在尝试制作一个仅在我的列表符合特定条件时才会运行的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
答案 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