2016-09-29 5 views
1

Überarbeitete Frage: Der folgende Code fügt Filter zu arrResults hinzu. Wenn das Makro Feld 13 mit arrResults() filtert, wird nur nach dem letzten erfassten Wert gefiltert. Beim Debuggen und Anzeigen des Direktfensters sehe ich mehrere Werte innerhalb der arrResults(), aber der Code filtert nur nach dem letzten Eintrag (dh wenn ich auf "Received/Sent/Fail" klicke, würde nur "Fail" zurückkehren.AutoFilter über IF und multiple Kriterien

Option Explicit 

Sub Add_Sheet_Update() 
Dim LastRow As Long 
Dim Rng As Range, str1 As String, str2 As String 
Dim i As Long, wsName As String, temp As String 
Dim arrResults() 

With Sheets("All Call Center Detail") 
    LastRow = .Cells(Rows.Count, 1).End(xlUp).Row 
    Set Rng = .Range("A1:BT" & LastRow) 
End With 

With Sheets("Search Form") 
    str1 = .Range("E9").Text 
    str2 = .Range("E13").Text 
End With 

Dim x As Integer, y As Integer 
With Range("R1:S99") ' 2 columns, any # of rows 
    For x = 1 To .Rows.Count 
     If .Cells(x, 1) Then 
      y = y + 1 
      ReDim Preserve arrResults(1 To y) 
      arrResults(y) = .Cells(x, 2) 
      End If 
    Next x 
End With 
Debug.Print Join(arrResults, "/") 

Sheets.Add After:=Sheets("Search Form") 
ActiveSheet.Name = ("Results") 

Sheets("All Call Center Detail").Select 
If Not str1 = "" Then Rng.AutoFilter Field:=6, Criteria1:=str1 
If Not str2 = "" Then Rng.AutoFilter Field:=7, Criteria1:=str2 
If y > 0 Then Rng.AutoFilter Field:=13, Criteria1:=arrResults 

Rng.SpecialCells(xlCellTypeVisible).EntireRow.Copy Sheets("Results").Range ("A1") 

Application.CutCopyMode = False 
ActiveSheet.ShowAllData 

Sheets("Results").Activate 
ActiveSheet.Columns.AutoFit 
wsName = Format(Date, "mmddyy") 
If WorksheetExists(wsName) Then 
    temp = Left(wsName, 6) 
    i = 1 
    wsName = temp & "_" & i 
    Do While WorksheetExists(wsName) 
     i = i + 1 
     wsName = temp & "_" & i 
    Loop 
End If 

ActiveSheet.Name = wsName 
Range("A1").Select 

End Sub 
+1

Willkommen bei Stackoverflow, Bill haben Sie einen Screenshot oder zwei der obigen Beschreibung zu unterstützen, hier eine große Website ist [Sie helfen Verbessere deinen Post] (http://stackoverflow.com/help/how-to-ask). Möglicherweise gibt es einige Hinweise, die dir helfen können. Vielleicht kannst du auch den obigen Beitrag kürzen (oder i s alles relevant/notwendig). Bitte nicht falsch verstehen. Aber Sie haben Recht in Ihrem Beitrag und es ist ein bisschen schwierig zu folgen (zumindest für mich). Aber vielleicht musst du nichts ändern und jemand anderes kann dir folgen und dir bei deinem Problem helfen. – Ralph

+1

Hallo Ralph - Danke für die Antwort. Ich habe meinen ursprünglichen Beitrag in der Hoffnung bearbeitet, die Frage klarer zu machen. – Bill

Antwort

0

Fügen Sie das Operator Argument zu Ihrer AutoFilter Aussage:.?

If y > 0 Then Rng.AutoFilter Field:=13, Criteria1:=arrResults, Operator:=xlFilterValues 
Verwandte Themen