2016-09-29 7 views
1

修正された質問:以下のコードは、arrResultsにフィルタを追加します。マクロがarrResults()によってフィールド13をフィルターに掛けると、キャプチャーされた最後の値だけがフィルターされます。デバッグを実行し、イミディエイトウィンドウを表示すると、arrResults()内でキャプチャされた複数の値が表示されますが、コードは最後のエントリだけでフィルタリングします(つまり、「Received/Sent/Fail」をクリックすると「Fail」のみが戻ります)。IFと複数の基準によるオートフィルタ

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

ようこそStackOverflowの、ビルにあなたは上記の説明を支援するためのスクリーンショットまたは2を持っています。ここの素晴らしいサイトです[あなたを助けるためにあなたのポストを改善してください(http://stackoverflow.com/help/how-to-ask)。おそらくあなたを助けるためのいくつかの指針があります。それの全てが関連/必要)。誤解しないでください。しかし、あなたはあなたのポストの中にあり、(少なくとも私のために)それに従うのはちょっと難しいです。しかし、おそらくあなたは何かを変更する必要はありませんし、ここで他の誰かがあなたの問題に従うことができます。 – Ralph

+1

こんにちはRalph - ありがとうございました。質問をより明確にすることを念頭に、元の投稿を編集しました。 – Bill

答えて

0

があなたのAutoFilterステートメントにOperator引数を追加します。?

If y > 0 Then Rng.AutoFilter Field:=13, Criteria1:=arrResults, Operator:=xlFilterValues 
関連する問題