Обновлять диаграмму в Excel после каждой итерации цикла - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь анимировать параметрическую кривую в Excel, генерируя ее диапазоны в итеративном цикле. Я использую код:

Public Sub playswirl()
    Range([a8], [a8].End(xlDown)).Clear
    Set cell = Range("a8")
    Do While cell.Offset(0, 1) <> ""
       cell.Offset(-1, 0).Copy cell
       ActiveSheet.ChartObjects(2).Chart.Refresh
       DoEvents
       Sleep (50)
       Set cell = cell.Offset(1, 0)
    Loop
End Sub

Диаграмма очищается в первой инструкции, а затем перестраивается по одному элементу за раз в цикле. Во время выполнения кода я вижу, что значения в электронной таблице меняются по одному, но диаграмма никогда не обновляется (я вижу полную кривую, то есть состояние до выполнения первой строки кода). Когда я нажимаю Ctrl и переводю код в состояние отладки, диаграмма обновляется до точки, где код был прерван. Я подумал, что chart.refresh бы справился с задачей - и добавил doevents для хорошей меры, когда это не сработало - но не повезло. Изменение спящего вызова на родное приложение Excel. Вызов ожидания также не помогает (и в любом случае он слишком медленный). Есть идеи?

1 Ответ

0 голосов
/ 11 ноября 2018

Я думаю, что это не проблема с графиком; это может быть проблема с обновлением системы. Если Application.ScreenUpdating = True (по умолчанию), вот несколько вещей, которые вы можете попробовать:

  • Попробуйте добавить «DoEvents» в ваш цикл, как объяснено здесь .
  • Попробуйте добавить «Рассчитать» в функцию. Например, напишите код ActiveSheet.Calculate.

Дайте мне знать, как они идут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...