У меня проблема с неожиданными результатами при 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 для всей программы ...