Надеюсь, это будет легко. У меня есть серия диаграмм в 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)
Конечная функция
.
Измените рабочий лист данных, чтобы он соответствовал следующему изображению:
.
= getWeekValue(1, Data!$A$2:$M$2)
увеличение первого аргумента функции getWeekValue на единицу для каждой недели (например, проход 1 для недели 1, 2 для недели 2, 3, для недели 3 и т. Д.
Как ни странно, по прошествии некоторого времени (несколько минут) диаграмма, наконец, обновляется. Я не уверен, что это связано с тем, что я выполнял другие действия, вызвавшие обновление, или потому, что Excel запускает обновление через несколько минут.