Фильтрация нескольких сводных таблиц на основе выпадающих списков с использованием VBA
Я надеюсь, что кто-то может помочь. У меня есть инструментальная панель, созданная кем-то другим, где на листах есть множество таблиц, все из которых работают от выбора даты раскрывающегося списка (От-К) на листе 1. Мне было предложено добавить к этому, и я создал сводные таблицы, которые наиболее подходят для работа. У меня проблема в том, что они нужны мне для фильтрации по выпадающим датам на листе 1.
Я надеюсь, что это возможно через VBA.
Я был в состоянии получить мои сводные отчеты для фильтрации на основе другого раскрывающегося списка, который основан на тексте. Но я не могу заставить один и тот же код (когда он настроен на настройку «месяц» и соответствующую раскрывающуюся ячейку) работать для выбора даты, и я также не могу понять, как разрешить множественный выбор, чтобы я мог выбрать диапазон дат.
Код, который я использовал, выглядит следующим образом:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Dim pt As PivotTable
Dim pi As PivotItem
Dim strField As String
strField = "Region"
On Error Resume Next
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Address = Range("D2").Address Then
For Each ws In ThisWorkbook.Worksheets
For Each pt In ws.PivotTables
With pt.PageFields(strField)
For Each pi In .PivotItems
If pi.Value = Target.Value Then
.CurrentPage = Target.Value
Exit For
Else
.CurrentPage = "(All)"
End If
Next pi
End With
Next pt
Next ws
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Буду очень признателен за любую помощь Я довольно новичок в VBA и стараюсь изо всех сил настроить код, который я нахожу в Интернете, но изо всех сил.
Спасибо
Пересмотрено: я также попробовал приведенный ниже код, который я нашел в другом месте, который использовался для выбора диапазонов дат
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("Pivots").Range("F2").Value
dEnd = Sheets("Pivots").Range("f3").Value
Set pt = ActiveSheet.PivotTable1
Set pf = pt.PivotFields("Month")
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
В примере я обнаружил, что этим управляла кнопка, но я просто попробовал это на листе. Но это также не работает для меня.