Ошибка выполнения сводной таблицы VBA 5: неверный вызов процедуры или аргумент - PullRequest
0 голосов
/ 07 июня 2018

Я выполняю макрос для обновления полей фильтра («Средство») всех сводных таблиц в книге, когда поле фильтра первой сводной таблицы изменяется (см. Код ниже).Макрос запускается, как ожидается, до строки с .PivotTables("PivotTable5").PivotFields("Facility").CurrentPage = facility, что дает ошибку времени выполнения 5.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim facility As String
'If the PivotTable1 filter value is changed...
If Not Intersect(Target, Me.PivotTables("PivotTable1").PivotFields("Facility").DataRange) Is Nothing Then
    facility = Me.PivotTables("PivotTable1").PivotFields("Facility").CurrentPage
    'Change all the other PivotTable filters to the same as PivotTable1
    With Me
        .PivotTables("PivotTable2").PivotFields("Facility").CurrentPage = facility
        .PivotTables("PivotTable3").PivotFields("Facility").CurrentPage = facility
        .PivotTables("PivotTable4").PivotFields("Facility").CurrentPage = facility
        .PivotTables("PivotTable5").PivotFields("Facility").CurrentPage = facility
        .PivotTables("PivotTable6").PivotFields("Facility").CurrentPage = facility
        .PivotTables("PivotTable7").PivotFields("Facility").CurrentPage = facility
    End With
    With ThisWorkbook
        .Worksheets("4E - Bili Screen (PivotTable)").PivotTables("PivotTable1").PivotFields("Facility").CurrentPage = facility
        .Worksheets("4E - DVT Proph (PivotTable)").PivotTables("PivotTable1").PivotFields("Facility").CurrentPage = facility            
        .Worksheets("4F - High-Risk Del (PivotTable)").PivotTables("PivotTable1").PivotFields("Facility").CurrentPage = facility
    End With
End If
End Sub

1 Ответ

0 голосов
/ 07 июня 2018

После записи макроса при обновлении фильтра вручную в PivotTable5 (который работает нормально) я заметил, что записанный макрос вставлен .ClearAllFilters до установки значения .CurrentPage (как показано ниже), что решило проблему.

.PivotTables("PivotTable5").PivotFields("Facility").ClearAllFilters
.PivotTables("PivotTable5").PivotFields("Facility").CurrentPage = facility

Однако мне нужно было .ClearAllFilters для каждой сводной таблицы после PivotTable5, иначе в следующей строке .CurrentPage произойдет ошибка.Я не знаю, почему ошибка произошла только в строке .PivotTables("PivotTable5").PivotFields("Facility").CurrentPage = facility или после нее, но не в эквивалентных строках над ней.

...