2 つのセル入力 (開始日、終了日) からピボット テーブル (日付) のフィルターを更新しようとしています。 table は、範囲内の日付のみを表示するフィルターを自動的に適用します。この目的のために、インターネットでいくつかの VBA コード スニペットを見つけました。
Option Explicit
Sub FilterPivotDates()
'
Dim dStart As Date
Dim dEnd As Date
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Application.ScreenUpdating = False
On Error Resume Next
dStart = Sheets("Pivot").Range("StartDate").Value
dEnd = Sheets("Pivot").Range("EndDate").Value
Set pt = ActiveSheet.PivotTable2
Set pf = pt.PivotFields("Week")
pt.ManualUpdate = True
pf.EnableMultiplePageItems = True
For Each pi In pf.PivotItems
pi.Visible = True
Next pi
For Each pi In pf.PivotItems
If pi.Value < dStart Or pi.Value > dEnd Then
pi.Visible = False
End If
Next pi
Application.ScreenUpdating = False
pt.ManualUpdate = False
Set pf = Nothing
Set pt = Nothing
End Sub
ワークシートの Modules フォルダーにそれがあり、Sheet "Pivot" に "Option Explicit" を入れました。日付入力のある2つのセルに範囲名「StartDate」と「EndDate」を割り当て、マクロでボタンを割り当てました。ピボットテーブルには「ピボットテーブル」という名前が付けられ、フィルター処理する必要があるそれぞれのフィールドには「週」という名前が付けられます。しかし、ボタンを押しても何も起こりません...誰かがコードにエラーを見ていますか、それとも別の方法で実装する必要がありますか?
ありがとうございます!