10

免責事項: この質問はmsdn フォーラムに投稿されましたが、(驚くべきことに) 返信がなかったので、ここにもクロス投稿します。この質問を試みる前に、そのリンクを確認することをお勧めします。そのリンクに解決策が投稿されていれば、時間を無駄にしてほしくありません:)

問題: レポート フィルターのフィールド名を知りたいです。だから私は探していますRegionCountryNameCitynameそしてProductKey。レポート フィルタは動的であり、変更できます。

スクリーンショット:

ここに画像の説明を入力

試したこと: Power Pivot のすべてのプロパティを確認しましたが、Power Pivot のフィールドをループできるプロパティが見つかりませんでした。

私もこのコードを試しましたが、明らかにエラーが発生しますSet pf = pt.PageFields(1)

Sub Sample()
    Dim pt As PivotTable, pi As PivotItem, pf As PivotField
    Dim lLoop As Long

    Set pt = Sheet1.PivotTables(1)
    Set pf = pt.PageFields(1)

    For Each pi In pf.PivotItems
        Debug.Print pi.Name
    Next pi
End Sub

エラーのスクリーンショット

ここに画像の説明を入力

それで、私は何が欠けていますか?または、私がとるべき別のアプローチがありますか?

編集

誰かがそれを試してみたい場合は、ファイルをここからダウンロードできます私はInventoryシートを見ています。

4

3 に答える 3

1

最初の質問が提起されてから 2 年以上が経過しましたが、満足のいく答えを見つけることができませんでした...

しかし、私は回避策を見つけました:-)スライサーを介してPowerPivotテーブルを変更することもできます。

このコードを使用して、ファイルで選択した月を変更しました。

Private Sub SpinButton21_SpinDown()
 Dim SC As SlicerCache
 Dim SL As SlicerCacheLevel
 Dim SI As SlicerItem

 Set SC = ActiveWorkbook.SlicerCaches("Slicer_Month4")
 Set SL = SC.SlicerCacheLevels(1)

 'get the current item number
 c = 1
 For Each SI In SL.SlicerItems
    If SI.Selected = True Then
        MONTHindex = c
        Exit For
    End If
    c = c + 1
 Next SI
 If MONTHindex = 1 Then
    MONTHindex = SC.SlicerCacheLevels.Item.Count + 1
 End If
 SC.VisibleSlicerItemsList = SL.SlicerItems(MONTHindex - 1).Name
End Sub

私はプロではありませんが、お役に立てば幸いです。

于 2015-11-24T14:46:16.177 に答える