Неожиданные результаты с Application.ScreenUpdating = False - PullRequest
0 голосов
/ 07 декабря 2018

У меня проблема с неожиданными результатами при Application.ScreenUpdating = False.

В большом проекте я добавляю большое количество фигур в разные позиции на рабочем листе.Кроме того, я вставляю ряд строк.В моем случае я особенно ХОЧУ, чтобы фигуры двигались со вставленными рядами.Тем не менее, они делают это только с Application.ScreenUpdating = True.Как только ScreenUpdating установлен False, фигуры перестают двигаться.Это, конечно, портит результаты полностью.

К сожалению, я не могу воспроизвести проблему.В этом минимальном примере вставленные фигуры перемещаются, как и ожидалось, со вставленной строкой, хотя я использую Application.ScreenUpdating = False.Тем не менее, в моей более крупной программе в основном идентичная процедура завершается неудачно без ScreenUdating.Кто-нибудь знает, что может быть причиной этого?

Sub ShapeTest()

Dim ActiveShape As Shape
Dim ShapeCell As Range

Application.ScreenUpdating = False

Set ShapeCell = ActiveSheet.Range("A1")
Set ActiveShape = ActiveSheet.Shapes.AddShape(msoShapeRectangle, ShapeCell.Left, ShapeCell.Top, ShapeCell.Width, ShapeCell.Height)

ActiveSheet.Rows(1).Insert shift:=xlShiftDown

Application.ScreenUpdating = True

End Sub

Обновление

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

Application.ScreenUpdating = True
Worksheets("Gantt").Rows(ThisRowGTT).Insert shift:=xlShiftDown
Application.ScreenUpdating = False

Однако это сильно замедляет выполнение - почти как если бы я использовал ScreenUpdating для всей программы ...

...