web-dev-qa-db-ja.com

VBAを使用してピボットテーブルフィルターを変更する

図のように「CoB日付」フィールドを含むピボットテーブルがあります。
ユーザー入力に従って日付を自動的に変更するマクロを作成しようとしています。
次のマクロコードを記述しました。しかし、それはエラーを示しています:

ピボットテーブルクラスのピボットフィールドプロパティを取得できません

これを手伝ってくれる人はいますか?
注:日付形式は問題ではないと想定してください

コード:

Sub My_macro()
    Dim num as String
    num = InputBox(Prompt:="Date", Title:="ENTER DATE")
    Sheets("Sheet1").PivotTables("PivotTable1") _
        .PivotFields("CoB Date").CurrentPage = num
End Sub

enter image description here

7

コメントしたとおり、まったく同じコードが私の側で機能します。

Sub My_macro()
    Dim num As String
    num = InputBox(Prompt:="Date", Title:="ENTER DATE")
    Sheets("Sheet1").PivotTables("PivotTable1") _
        .PivotFields("CoB Date").CurrentPage = num
End Sub

次のようなデータがあるとします。

enter image description here

マクロを実行すると、日付の入力を求められます。

enter image description here

そして、[ok]を押すと、結果は次のようになります。

enter image description here

日付の入力は問題ではないと想定していることに注意してください。
それで、それを排除する単純なデータを使用したので、コードは機能します。
処理している可能性のある問題は、日付にタイムスタンプがある場合です。
そしてあなたのスクリーンショットに基づいて、それは事実です。

3
L42

「ピボットテーブルクラスのピボットフィールドプロパティを取得できません」で同じ問題が発生しました。

私のピボットテーブルはそのシート(またはその問題についてはワークブック)で唯一のピボットテーブルでしたが、 "PivotTable1"ではないことがわかりました。他に3つ作成して削除していたため、「PivotTable4」である可能性が高いです。

ピボットテーブルの名前を確認し、必要に応じて変更するには、ピボットテーブルの任意の場所を右クリックし、[ピボットテーブルオプション]を選択します。右上に「ピボットテーブル名」が表示され、そこから名前を変更できます。

さらに、フィルターの1つを変更しようとすると、同じエラーで問題が発生しました。私が使用してフィールドを参照したとき:

Sheets("mySheetName").PivotTables("PivotTable4").PivotFields("myFieldName")

上記と同じエラーがスローされます。フィールド名の最後に3つのスペースがあることがわかりました。私がこれを見つけた方法は、それが見つかるまで、それぞれのMsgBoxを表示するすべてのフィルターフィールドをループすることでした。次のコードは私がそれをどのように行ったかであり、うまくいけば、同様の問題を持つ誰かを助けるかもしれません:

Dim pt As PivotTable
Dim pf As PivotField

Set pt = Sheets("mySheetName").PivotTables("PivotTable4")
For Each pf In pt.PivotFields
    MsgBox ("FieldName: [" & pf.Name & "] with a length of: " & Len(pf.Name) & " and a trimmed length of: " & Len(Trim(pf.Name)))
Next pf

これが誰かを助けることを願っています!

1
Brian H