私はExcel2010を使用しており、VBA関数を記述して、ピボットテーブルのさまざまなメトリックをユーザーが変更したときに自動的にフォーマットします(フィールドを追加/削除するときにフォーマットが保持されるようにします)。これを行うために、PivotFieldsコレクションをループしています。形式を変更するには、ピボットテーブルにPivotFieldが表示されている必要があります。表示されていない場合、エラーがスローされます。そのため、PivotFieldのOrientationプロパティを確認し、OrientationofxlDataFieldに設定されているプロパティのみを処理できると考えました。
ただし、関数を実行すると、ピボットテーブルに表示されている場合でも、すべてのデータフィールドにxlHiddenの方向が表示されます。
私はこのような単純な機能を実行しているだけです
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim pt As PivotField
For Each pt In ActiveSheet.PivotTables("PivotTable1").PivotFields
If VBA.InStr(1, pt.Caption, "COMP", vbTextCompare) And pt.Orientation = xlDataField Then
pt.Function = xlAverage
pt.NumberFormat = "0.00%"
End If
Next pt
End Sub
次を使用して、すべてのピボットフィールドをチェックしました。
Debug.Print pt.Caption & " " & pt.Orientation
[ページ]、[行]、または[列]フィールドにないものはすべて非表示として表示されます。データフィールドとして何も表示されません。私は何かが足りないのですか?データフィールドとして何を設定したかは関係ありません。xlDataFieldとしてタグ付けされたものはありません。これを別の方法で試してみる必要がありますか?PivotFields.Hiddenプロパティを使用しようとしましたが、アクセスしようとするとエラーが発生します。