Диаграммы не обновляются автоматически при изменении данных

Надеюсь, это будет легко. У меня есть серия диаграмм в MS Excel, которые указывают на данные на одном листе. Данные на листе рассчитываются с использованием функции VBA. Когда данные обновляются функцией VBA, новые числа не отражаются в диаграммах, которые на них указывают. Я попытался вызвать Application.Calculate, но это не помогло. Есть мысли?


UDPATE:

Мне удалось продублировать эту проблему в гораздо меньшем масштабе. Вот как: Если Target.Parent.Range ("worksheetDate") = Target, то Application.CalculateFull Конец, если Конец подписки

  • Создайте новый модуль VBA.

  • Вставьте следующий код в новый модуль VBA (прошу прощения - я не могу заставить Stack Overflow правильно отформатировать его на всю жизнь - это лучшее, что я мог сделать do):
    .

      Функция getWeekValue (weekNumber как целое число, valuesRange как диапазон) как целое число
    
     Dim aCell As Range 
     Уменьшить текущую дату как дату 
     Dim arrayIndex как целое число 
     Dim weekValues ​​(от 1 до 6) как целое число 
    
     currentDate = ThisWorkbook.Names ("worksheetDate"). RefersToRange.Value
     arrayIndex = 1 
     Для каждой ячейки In valuesRange 
     Если month (currentDate) = month (ThisWorkbook.Sheets ("Data"). Cells (_ 
     aCell.Row - 1, aCell.Column)) Тогда
     weekValues ​​(arrayIndex) = aCell.Value 
     arrayIndex = arrayIndex + 1 
     Конец, если 
     следующий
    
     getWeekValue = weekValues ​​(weekNumber) 
     Конечная функция 
    

    .

  • Измените рабочий лист данных, чтобы он соответствовал следующему изображению:

  • alt text

    • Выберите ячейку B1 и назовите диапазон «worksheetDate»
    • Дублируйте строки с 1 по 3 на следующем изображении:

    alt text

    • В строке 4 под заголовком «Неделя» X "заголовков введите следующую формулу

    .

     = getWeekValue(1, Data!$A$2:$M$2)
    

    увеличение первого аргумента функции getWeekValue на единицу для каждой недели (например, проход 1 для недели 1, 2 для недели 2, 3, для недели 3 и т. Д.

    • Создайте гистограмму, используя ячейки с A3 по E4 как данные
    • Измените дату в ячейке B2 на дату между 01.10.2010 и 31.12.2010, выбрав месяц, отличный от месяца, который в данный момент находится в ячейке. Например, если дата равна 12 / 11/2010 измените его на что-то вроде 11/11/2010 или 10/11/2010. Обратите внимание, что и данные, и диаграмма обновляются правильно.
    • Измените дату в ячейке B2. Обратите внимание, что данные обновляются, но диаграмма - нет.

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

    10
    задан Community 9 July 2018 в 18:41
    поделиться