2015-09-15 2 views
2

В настоящее время я пытаюсь создать If Statement, который будет работать только в том случае, если мой список соответствует определенному критерию. Однако сейчас макрос работает, хотя мои критерии AutoFilter не включают 4 в Criteria1.Если Statement AutoFilter соответствует критериям

Кто-нибудь знает, как исправить эту проблему?

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 

ответ

2

Я вижу два вопроса, и я постараюсь ответить на них соответственно.

Q1. Сейчас макрос работает, хотя мои критерии AutoFilter не включают 4 в Criteria1. Кто-нибудь знает, как исправить эту проблему?

Это происходит потому, что момент, когда вы говорите

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 
+0

Sid, вопрос «ли фильтр включать критерии», или это «есть строка в списке, соответствующем критериям ", призывая либо к' subtotal (3', либо к специальным ячейкам (xlcelltypevisible) 'solution? – nutsch

+0

@nutsch: Есть 2 вопроса. Q1.' В настоящее время я пытаюсь сделать заявление If, будет выполняться только в том случае, если мой список соответствует определенному cr iterion.' Q2. 'прямо сейчас макрос работает, хотя мои критерии AutoFilter не включают 4 в Criteria1. Кто-нибудь знает, как исправить эту проблему? »Я ответил на оба вопроса ... Почему это происходит и как достичь того, что хочет OP –

+0

Я обновил ответ, чтобы он стал более понятным сейчас :) @nutsch –

Смежные вопросы