2017-05-10 14 views
0

ユーザー定義の範囲に基づいてピボットテーブルをフィルタリングするマクロを設定しようとしています。ユーザー定義範囲の値に基づいてピボットテーブルをフィルタリングします。

私が持っているのは、範囲を取得するためのプロンプトです。残念ながら、範囲から値を取り出してフィルターに適用する方法はわかりません。ご協力いただきありがとうございます!

Sub foreachloop() 

    Dim wbmodel As Excel.Workbook 
Set wbmodel = ActiveWorkbook 

Dim rng As Range 
Dim Filter As String 




    With wbmodel.Sheets("Pivot_model").PivotTables("Modelpivot") 

    .ClearAllFilters 

    Set rng = Application.InputBox("select Range", "Inputs", Type:=8) 
    Filter = Application.InputBox("select Filter", "Inputs", Type:=8) 

    MsgBox rng.Address 
    MsgBox Filter 


    For Each PivotItem In .PivotFields(Filter).PivotItems 
    Select Case PivotItem.Name 
     Case rng 
      PivotItem.Visible = True 
     Case Else 
      PivotItem.Visible = False 
     End Select 
    Next PivotItem 


    End With 

    End Sub 

です。私はいくつか(わずかな)アップデートを行いました。私は最初の "For Each"ループを作った。今、私はフィルタを適用するために同様の "each for"ループを行う必要があることを知っています。私は数時間コードと戦ってきたし、次に行くべき場所がわからない。

答えて

0

は、他のすべての隠された、あなたの範囲を順番に持つとピボットアイテムを見えるように、この Filter Excel pivot table using VBA

を試してみてください。

+0

私はその投稿が私の必要としているものを訴えていますが、完全に正直なところでは私のために解読コードを解読するための通訳が必要です。私は私の現在のコードで正しい道にいると信じています。私は "rng"をどのように循環させるかわかりません....この最後のセクションで私を助けることができますか? – VBArookie

+0

私のコードが機能しない理由は、ユーザーが範囲を入力したためです。範囲内の値を順番に調べる必要があります。私は完全に基盤から離れているかもしれません、そして、これを行うより簡単な方法があるかもしれません。 – VBArookie

+0

割り当てる変数が必要です。したがって、変数として "rng"を割り当てました。しかし、あなたはrngの値を設定する必要があります。 like ... rng = cells(n + 1,1).value https://msdn.microsoft.com/en-us/library/office/ff196273.aspx – gemmo

関連する問題