1

ピボットテーブルをまとめるマクロに取り組んでいます。

私の問題: 計算部分を機能させることができません。PivotField(18) が .Function=xlCount を計算する段階でコードを実行するたびにエラーが発生します。表示されるエラーは、「1004 範囲クラスの選択メソッドが失敗しました」です。

オンラインおよび MS ヘルプ セクションで見つけたすべての例は、コードをセットアップした方法で構成されています。私は何が欠けていますか???

どんな助けでも大歓迎です...

私は一日の大半をこれに取り組んできました。次のページ (リンク) は非常に役に立ちましたが、この特定の問題を解決するのには役立ちませんでした。

' Start of PivotSpecific Formatting
Set pt = ActiveSheet.PivotTables("PT" & wsNewWorksheetName)
With pt
    ' Prevent AutoFormatting of Columns
    .HasAutoFormat = False
    ' Hide Field Headers
    .DisplayFieldCaptions = False
    .TableStyle2 = "PivotStyleMedium2"
    ' Apply calculation to numbers and change Caption
    With .PivotFields(18)
        .Caption = "Demand"
        .Function = xlCount
        .NumberFormat = "#,##0"
    End With
    With .PivotFields(15)
        .Caption = "Lowest OP"
        .Function = xlMin
        .NumberFormat = "#,##0.00"
    End With
End With

更新 1: ピボット テーブルのスクリーンショット ピボットテーブルのスクリーンショット

更新 2: bonCodigo からのテスト済みコード これが私のワークブックに合わせて調整されたコードです。これにより、次の行で実行時エラー 91 が発生します: Set pvField = pvTable.PivotFields(18)

Dim wkSheet As Worksheet
Dim pvTable As PivotTable
Dim pvField As PivotField

Set wkSheet = ThisWorkbook.Worksheets(wsNewWorksheetName)
Set pvTble = wkSheet.PivotTables("PT" & wsNewWorksheetName)
Set pvField = pvTable.PivotFields(18)

With pvField
     .Caption = "Demand"
     .Function = xlCount
     .orientation = xlDataField
     .NumberFormat = "#,##0"
End With

Set pvField = Nothing
Set pvTable = Nothing
Set wkSheet = Nothing
4

1 に答える 1

1

これを試して、結果をコメントしてください。ですから、そこから見ることができます。

Option Explicit

'-- whatever other code you may have... 

Dim wkSheet as Worksheet
Dim pvTable as PivotTable
Dim pvField as PivotField

Set wkSheet = ThisWorkbook.Worksheets("Sheet1") '-- user proper sheet name explicitly
Set pvTble = wkSheet.PivotTables("PivotTable1") 
   ' or wkSheet.PivotTables(1) '-- use pivot table name or index
Set pvField = pvTable.PivotFields("SomeField") '-- use pivot field name or index

' -- do whatever you want to do with the pivot table

' -- do what you need to do with the pivot field
With pvField
     .Caption = "Demand"
     .Orientation = xlDataField '--<< THIS could well be the culprit
     .Function = xlCount
     .NumberFormat = "#,##0"
End With

Set pvField = Nothing
Set PvTable = Nothing
Set wkSheet = Nothing

フォーマットするフィールドが複数あるため、それらが連続している場合はループを使用することをお勧めしますDataFields Index

例えばpvTable.DataFields(1).Function = xlCount

それ以外の場合は、それらを個別に定義する必要があります。対話するオブジェクトへの参照として変数を割り当てることが常に最善です。:)

于 2012-12-05T14:36:43.327 に答える