PivotChart - ActiveChart.Refresh работает только при отладке - PullRequest
3 голосов
/ 01 апреля 2019

У меня есть книга Excel, в которой я создаю сводную диаграмму для VBA из существующей сводной таблицы.Этот график создается как новый рабочий лист.

Пока результат соответствует ожидаемому.Но когда я перехожу к сгенерированному графику и хочу что-то изменить в редакторе полей, я получаю сообщение об ошибке:

Отчет сводной таблицы был сохранен без исходных данных.Выберите «Обновить данные», чтобы обновить отчет. (перевод с немецкого)

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

  • При нормальном выполнении кода .Refresh, по-видимому, не действует.
  • При пошаговом выполнении кода с помощью отладчика .Refresh работает так, как ожидалось, и я не получаю сообщение об ошибке в редакторе полей.

Я пробовал это в Excel 2010 и 2013. Обе версии показывают одинаковое поведение.

  Charts.Add    
  chartSheetName = dqSource & "_PIVOT_CHART"
  With ActiveChart
    .Location where:=xlLocationAsNewSheet , Name:=chartSheetName 
    .HasTitle = True
    .ChartTitle.Select
    .ChartTitle.Text = "My chart title"  
    .Refresh ' <-- This is the suspect
  End With

Ответы [ 3 ]

5 голосов
/ 15 апреля 2019

PivotChart зависит от PivotTable.

Я предлагаю обновить PivotCache этой сводной таблицы:

With myPivotTable
    .PivotCache.Refresh
    .PivotCache.MissingItemsLimit = xlMissingItemsNone
End With
0 голосов
/ 21 апреля 2019

Ваша проблема вызвана тем, что вам нужно связать базовые данные на рабочем листе. находясь в ячейке сводной таблицы, перейдите к опциям сводной таблицы => вкладка данных => отметьте опцию «сохранить исходные данные в файл». Этот параметр позволяет использовать Excel для сохранения сводной кэш-памяти с рабочим листом.

Я надеюсь, что это поможет вам. С наилучшими пожеланиями из Колумбии.

0 голосов
/ 01 апреля 2019

Вы можете попробовать строку кода:

Do Events

после этого для запуска кода в режиме реального времени.

...