Когда я запускаю свой код для 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
Вероятно, потому что ваше поле страницы не содержит элемент, равный значению, присвоенному
val
.Кстати, вы не выполняете оператор
With/End With
, так как на самом деле вы не манипулируете объектомpt
.@Domenic поле страницы содержит элемент, эквивалентный значению, присвоенному val. Код, используемый для получения этого значения переменной val и отображения результатов сводной таблицы только с полем сводной таблицы «job_helped», равным val. Спасибо, что указали, что мне не нужен ненужный оператор With. Этот код действительно работал правильно, но в последнее время это не так.
При возникновении ошибки какое значение присваивается
val
?@domenic Значение val равно 00115015, это число, которое я присвоил val, сославшись на ячейку B2.
Попробуйте обновить сводную кэш-память с помощью
pt.pivotcache.refresh
перед очисткой и фильтрацией поля страницы.Появляется такое же сообщение об ошибке ... Я просмотрел много других сообщений об этой борьбе, и ни одно из их решений не работает.
Если базовые значения для этих ячеек, содержащих такое значение, как
00115015
, на самом деле115015
, но отформатированы для отображения00115015
, вы получите эту ошибку. Так ли это?Ячейки на самом деле содержат значения 00115015.
На всякий случай, когда вы выбираете ячейку, содержащую такое значение, и смотрите на строку формул (а не на саму ячейку), вы видите
00115015
, а не115015
?Правильно, я вижу 00115015
Я должен еще раз взглянуть на это, когда у меня будет шанс. Тем временем кто-то еще может выступить с предложением.
Этот код или что-то очень близкое к нему работало только в прошлом месяце, что удивительно, потому что сейчас это просто не работает. Я не знаю, может ли это быть чем-то, что может помочь вам.