Application.ScreenUpdating = False的意外结果

时间:2018-12-07 12:58:13

标签: excel vba excel-vba insert shapes

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

0 个答案:

没有答案