在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 ...