2017-11-27 6 views
0

イミディエイトウィンドウにオートフィルタ配列を印刷することに興味があります。私は以下のように、列をフィルタリングしながらマクロを記録することで手動でこれをキャプチャできます。イミディエイトウィンドウにオートフィルタ配列を印刷

ActiveSheet.Range("$A$1:$AF$1191").AutoFilter Field:=5, Criteria1:=Array(_ 
    "3", "4", "5"), Operator:=xlFilterValues 

アドバイスをいただければ幸いです。

+0

どのような結果が見込まれますか? – QHarr

+0

@QHarr理想的には、イミディエイトウィンドウに逐語的に含まれたコードを印刷したいと思います。 –

+0

私はすぐにそれをそのまま印刷することはできないと思います。それは文字列である必要があります。 – QHarr

答えて

0

私はそれを理解したと信じています。私はすべてoperatorsを処理するためにこれを更新する必要がありますが、これは私がこれまで行ってきたことです。

Sub PrintFilters() 

    Dim ws As Worksheet 
    Set ws = ThisWorkbook.ActiveSheet 

    Dim wsn As String 
    wsn = ws.Name 

    Dim LastCol As Integer 
    LastCol = ws.UsedRange.Columns.Count 

    Dim AllCrit As Variant 
    Dim CritVar As Variant 
    Dim CritString As String 

    Dim i As Integer 

    For i = 1 To LastCol 

    On Error Resume Next 

    With ws.AutoFilter.Filters(i) 

     Select Case .Operator 

      Case Is = 7 'xlFilterValues 
       For Each CritVar In .Criteria1 
        AllCrit = AllCrit & Chr(44) & Chr(34) & Mid(CritVar, 2) & Chr(34) 
        CritString = AllCrit 
        CritString = Replace(CritString, Chr(44), "", 1, 1) 
       Next 
       Debug.Print "ThisWorkBook.Sheets(" & Chr(34) & wsn & Chr(34) & Chr(41) & ".UsedRange.Autofilter Field:=" & i & Chr(44) & "Criteria1:=Array(" & CritString & ")," & "Operator:=xlFilterValues" 

      Case Is = 2 'xlOr 
       Debug.Print "ThisWorkBook.Sheets(" & Chr(34) & wsn & Chr(34) & Chr(41) & ".UsedRange.Autofilter Field:=" & i & Chr(44) & "Criteria1:=" & Chr(34) & Mid(.Criteria1, 2) & Chr(34) & Chr(44) & "Operator:=xlOr" & Chr(44) & ("Criteria2:=" & Chr(34) & Mid(.Criteria2, 2)) & Chr(34) 

      Case Is = 0, 1 'other cases/xlAnd 
       Debug.Print "ThisWorkBook.Sheets(" & Chr(34) & wsn & Chr(34) & Chr(41) & ".UsedRange.Autofilter Field:=" & i & Chr(44) & "Criteria1:=" & Chr(34) & Mid(.Criteria1, 1) & Chr(34) 

     End Select 

    End With 

    AllCrit = Nothing 
    Next i 

End Sub