Диаграмма не будет обновляться в Excel (2007) - PullRequest
18 голосов
/ 04 февраля 2011

У меня есть документ Excel (2007) с диаграммой (кластеризованный столбец), которая получает свои ряды данных из ячеек, содержащих вычисленные значения

Расчетные значения никогда не изменяются напрямую, а только в результате других ячеек влист меняется

Когда я меняю другие ячейки на листе, ячейки Серии данных пересчитываются и показывают новые значения - но Диаграмма, основанная на этом Серии данных, отказывается обновляться автоматически

Я могуполучить диаграмму для обновления, сохранив / закрыв или переключив одну из настроек (например, изменив направление оси x / y и затем вернув ее обратно), или повторно выбрав ряд данных

Каждое найденное мной решениеонлайн не работает

  • Да, у меня установлен автоматический расчет
  • Ctrl + Alt + F9 все прекрасно обновляется, КРОМЕ этого графика
  • Я пересоздал графикнесколько раз и на разных компьютерах
  • Я пробовал VBA-сценарии, такие как:

    Application.Calculate
    Application.CalculateFull
    Application.CalculateFullRebuild
    ActiveWorkbook.RefreshAll
    DoEvents

Ничто из этого не обновляет и не обновляет диаграмму

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

Кто-нибудь сталкивался с этим раньше или знает, что я мог бы сделать, чтобы решить проблему?Спасибо

Ответы [ 34 ]

1 голос
/ 04 декабря 2013

Хорошо, у меня есть решение, правда ....

Я обнаружил, что проблема с тем, что мои диаграммы не обновлялись, впервые возникла вскоре после того, как я скрыл некоторые столбцы данных, подающие диаграмму, и установил флажок «показывать данные, скрытые в строках и столбцах» в окне сообщения «Выбрать источник данных» диаграммы).

Я обнаружил, что если я вернулся в поле «Выбор источника данных» и снял флажок / перепроверил «показывать данные, скрытые в строках и столбцах», то диаграмма обновляется.

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

Sub RefreshCharts()

    Application.ScreenUpdating = False

For I = 1 To ActiveWorkbook.Worksheets.Count

Worksheets(I).Activate

    ActiveSheet.ChartObjects("Chart 1").Activate

    ActiveChart.PlotVisibleOnly = True

    ActiveChart.PlotVisibleOnly = False

Next I

    Application.ScreenUpdating = True

End Sub
1 голос
/ 28 июня 2016

Это сработало для меня, оно обрезает и повторно вставляет диаграммы в активный лист.Я основал это на коде Джейсона и посте в блоге , который я нашел в быстром поиске Google.

Sub RepasteCharts()

Dim StrTemp As String
Dim IntTempTop As Integer
Dim IntTempLeft As Integer


Set sht = ActiveSheet

For Each co In sht.ChartObjects
    'Activate the chart
    co.Activate

    'Grab current position on worksheet
    IntTempTop = ActiveChart.Parent.Top
    IntTempLeft = ActiveChart.Parent.Left

    'Cut and paste
    ActiveChart.Parent.Cut
    ActiveSheet.Paste

    'Reposition to original position
    ActiveChart.Parent.Top = IntTempTop
    ActiveChart.Parent.Left = IntTempLeft
Next co


End Sub
1 голос
/ 14 апреля 2015

Мы нашли решение, не связанное с VBA: умножение некоторого элемента диапазона данных диаграммы на TODAY()-TODAY()+1.

Несмотря на то, что диапазон без этого пересчитывался, изменчивая природа TODAY() каким-то образомдает ему дополнительный импульс, который вызывает пересчет графика.

1 голос
/ 19 декабря 2013

У меня была эта проблема, и я обнаружил, что она вызвана одновременным запуском двух приложений Excel.Если я закрыл все и открыл только файл, у меня были проблемы с графиками, где они должны быть динамическими.Может быть, это поможет

1 голос
/ 20 июля 2016

Начиная с Excel 2013, есть метод Chart.Refreh (https://msdn.microsoft.com/de-de/library/office/ff198180.aspx), который работал для меня:

Dim cht As ChartObject
For Each cht In ThisWorkbook.ActiveSheet.ChartObjects
    cht.Chart.Refresh
Next cht    
0 голосов
/ 21 декабря 2011

У меня была та же проблема, что и у постера.В основном я использую панель мониторинга, и у меня есть несколько именованных диапазонов, которые заполнены возвращаемыми значениями некоторых пользовательских функций.На панели инструментов есть несколько круговых диаграмм с рядами данных, привязанными к ячейкам, которые содержат эти именованные диапазоны (проблема также возникает, если целевые ячейки рядов данных содержат UDF напрямую, в обход именованных диапазонов).

Я изменяюзначение ячейки, которое содержит, например, диапазон дат, на котором должна быть основана панель мониторинга, и именованные диапазоны и пользовательские функции вынуждены вычислять.Однако круговые диаграммы не обновляются - по какой-то причине другие типы диаграмм обновляются.И, кстати, это объекты диаграммы, а не листы диаграммы.В любом случае, давайте перейдем к решению:

Я не хотел явно менять название графика или какой-либо другой его аспект, и в любом случае я заметил, что это не обновляло мои графики последовательно.Иногда в первый раз, когда я запускал вычисления, пироги обновлялись, но при последующих вычислениях пироги не обновлялись.Однако я заметил, что каждый раз, когда я вносил изменения в код, моя панель управления работала.Таким образом:

Решение:

With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule

     .AddFromString "'test"
     .DeleteLines 1

End With

Если вы используете модуль Workbook (я не был в этом случае), просто создайте новый модуль и ссылкуэто вместо этого.

0 голосов
/ 11 марта 2016

Диаграммы не «чувствуют» изменения при прямой вставке значений в исходные ячейки с помощью макроса. Вы должны отправить значения из ячеек диаграммы, и после этого используйте код, подобный этому

Worksheets ( "Лист1") Range ( "A1: K1"). = Worksheets ( "Лист2") Диапазон.. ( "A4: K4") Значение

0 голосов
/ 07 марта 2016

У меня была такая же проблема, и я обнаружил, что строка будет отображаться только в том случае, если я введу неверные данные (символы вместо цифр).Это привело к появлению строки, но переход к действительным данным заставил ее снова исчезнуть.

Я обнаружил, что если я дважды щелкнул по строке (появившейся с неверными данными), это показало мне, что она по какой-то причине находилась на ВТОРОЙ оси.Изменение этого параметра на ОСНОВНУЮ ось решило мою проблему.

0 голосов
/ 16 июня 2015

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

Убедитесь, что вы копируете и вставляете изображения, прежде чем выполнять все другие действия ....

0 голосов
/ 14 апреля 2015

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

...