Производительность условного форматирования VBA - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь написать программу в Excel VBA, показывающую диаграммы сигналов трафика.Эта диаграмма состоит из диаграмм в виде полос, которые я редактирую по одной за раз, и в этот момент производительность хорошая.Тем не менее, под каждой из полос есть еще одна полоса, показывающая столкновения с другими полосами (gif прилагаются) .В любом случае, все эти маленькие полосы обновляются одновременно в количестве от 10 до 40, когда я редактирую одну из основных полос.И вот тут у меня проблема с производительностью.

В приведенном ниже коде я показываю выдержки из макроса, с которыми у меня возникают проблемы с производительностью (нарисуйте несколько полос).Таким образом, я заполняю массивы, а затем у меня есть около 10 экземпляров условий For Each, подобных представленному.Интересным фактом является то, что даже когда я отключил рисование полос, задержка все еще есть.Так может ли быть так, что петли For Each вызывают задержку (я делаю 160 ячеек в каждом ряду)?Есть ли что-то, что я мог бы улучшить в коде?Я установил Application.ScreenUpdating = False и Application.Calculation = xlCalculationManual.Любая помощь с благодарностью.

Редактирование диаграмм запаздывание:! https://imgur.com/a/jkMwiFv

    'populating arrays (about 8 arrays for each stripe)

    For i = 1 To arr_size
    MZ(i) = mzR.Offset(0, i - 1).Value
    Next i

    For i = 1 To arr_size
    gstart(i) = gst.Offset(0, i - 1).Value
    Next i

    'For Each conditions (about 10 conditions like that for each stripe)

    For Each cell In irow1
    For i = 1 To arr_size
    If cell > gstart(i) - MZ(i) And gstart(i) > PZ And cell <= KZ Then
    cell.Interior.ColorIndex = clrViolate1
    Exit For
    End If
    Next i
    Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...