2017-07-20 341 views
0

各ワークシートに複数のピボットテーブルを含む複数のワークシートを含むExcelワークブックがあります。私はすべてのピボットテーブルをループし、その 'レポート機能'フィルタをリストボックスから選択したユーザー指定の値に変更しようとしています。すべてのピボットテーブルには、「レポート機能」フィルタがあります。VBA- "エラー1004:PivotFieldクラスのCurrentPageプロパティを取得できません"

私は約50個のピボットテーブルを持っています。コードは、8つのピボットを除き、すべてのピボットテーブルを正常に変更します。これらの8つのピボットテーブルのフィルタは変更されません。代わりに、エラー "エラー1004:PivotFieldクラスのCurrentPageプロパティを取得できません"が返されます。

wHYこのコードは、少数のピボットテーブルでこのエラーを返しますか?

不思議なことに、このエラーを返すピボットテーブルとまったく同じようです。

Sub ChangePivotFilter(str As String) 

Dim ws As Excel.Worksheet 
Dim aWB As Excel.Workbook 
Dim myPivot As Excel.PivotTable 
Dim myPivotField As Excel.PivotField 

Set aWB = ActiveWorkbook 
For Each ws In aWB.Worksheets 

    For Each myPivot In ws.PivotTables 
     Set myPivotField = Nothing 

     On Error Resume Next 
     Set myPivotField = myPivot.PivotFields("Report Function") 
     myPivotField.CurrentPage = str 
    Next myPivot 
Next ws 

End Sub 

ご協力いただきありがとうございます。

+0

「レポート関数」の「PivotField」には 'str'と一致する結果がありますか?すべてのテーブルで? –

+0

On Error Resume Nextがあってもそのエラーが発生していますか? – Sam

+0

@Shai Radoはい、すべてのピボットテーブルの[レポート関数]フィールドにstrがあります。 – mark

答えて

0

に割り当て、またはPivotFieldはそのピボットテーブルの「ページ」(すなわち「フィルタ」)には、物理​​的にではない場合CurrentPageからの読み取りに失敗します:

PivotField in page

あなたがプログラム的PivotFieldを送ることができます次のようにOrientationプロパティをxlPageFieldに設定して、「ページ」を開きます。

myPivotField.Orientation = xlPageField 
関連する問題