Ошибка времени выполнения 1004 для .CurrentPage PivotTable VBA Excel

avatar
Logan
1 июля 2021 в 18:20
92
0
0

Когда я запускаю свой код для VBA Excel, моя цель — обновить сводную таблицу, чтобы значение ячейки служило фильтром для всего столбца сводной таблицы. Однако, когда я это делаю, я всегда получаю сообщение об ошибке: «Ошибка выполнения «1004»: ошибка, определяемая приложением или объектом».

Это попадает в строку

pf.CurrentPage = val

Вот весь код:

Dim pt As PivotTable
Dim pf As PivotField
Dim val As String

ThisWorkbook.Worksheets("Shortage - Project").Activate

Set pt = Worksheets("Shortage - Project").PivotTables("ShortagePivot")
Set pf = pt.PivotFields("job_helper")
val = Worksheets("Shortage - Project").Range("B1").Value



With pt
    pf.ClearAllFilters
    pf.CurrentPage = val
End With

pt.RefreshTable


Sheets("Shortage - Project").Protect
Источник
Domenic
1 июля 2021 в 18:56
0

Вероятно, потому что ваше поле страницы не содержит элемент, равный значению, присвоенному val.

Domenic
1 июля 2021 в 18:57
0

Кстати, вы не выполняете оператор With/End With, так как на самом деле вы не манипулируете объектом pt.

Logan
1 июля 2021 в 19:07
0

@Domenic поле страницы содержит элемент, эквивалентный значению, присвоенному val. Код, используемый для получения этого значения переменной val и отображения результатов сводной таблицы только с полем сводной таблицы «job_helped», равным val. Спасибо, что указали, что мне не нужен ненужный оператор With. Этот код действительно работал правильно, но в последнее время это не так.

Domenic
1 июля 2021 в 21:18
0

При возникновении ошибки какое значение присваивается val?

Logan
2 июля 2021 в 12:04
0

@domenic Значение val равно 00115015, это число, которое я присвоил val, сославшись на ячейку B2.

Domenic
2 июля 2021 в 12:39
0

Попробуйте обновить сводную кэш-память с помощью pt.pivotcache.refresh перед очисткой и фильтрацией поля страницы.

Logan
2 июля 2021 в 12:53
0

Появляется такое же сообщение об ошибке ... Я просмотрел много других сообщений об этой борьбе, и ни одно из их решений не работает.

Domenic
2 июля 2021 в 14:03
0

Если базовые значения для этих ячеек, содержащих такое значение, как 00115015, на самом деле 115015, но отформатированы для отображения 00115015, вы получите эту ошибку. Так ли это?

Logan
2 июля 2021 в 15:16
0

Ячейки на самом деле содержат значения 00115015.

Domenic
2 июля 2021 в 15:35
0

На всякий случай, когда вы выбираете ячейку, содержащую такое значение, и смотрите на строку формул (а не на саму ячейку), вы видите 00115015, а не 115015?

Logan
2 июля 2021 в 15:35
0

Правильно, я вижу 00115015

Domenic
2 июля 2021 в 15:41
0

Я должен еще раз взглянуть на это, когда у меня будет шанс. Тем временем кто-то еще может выступить с предложением.

Logan
2 июля 2021 в 17:27
0

Этот код или что-то очень близкое к нему работало только в прошлом месяце, что удивительно, потому что сейчас это просто не работает. Я не знаю, может ли это быть чем-то, что может помочь вам.

Ответы (0)