撤消命令工作这么晚

时间:2013-06-26 08:45:45

标签: vba powerpoint-vba undo

我试图删除带有动画的形状,以便在没有动画的情况下拍摄幻灯片。之后,我想要它们,所以我使用撤消命令。问题是这个命令工作到很晚。我的意思是它会在我所有的vba代码结束时进行撤消,而我只需要在调用命令时就这样做。我试图停止代码几秒钟,但无法正常工作。这是我正在使用的代码:

  For Each sl In ActivePresentation.Slides
        shapeNum = sl.Shapes.count
        'ActivePresentation.Slides(1).Shapes(1).
        While shapeNum <> 0
            If sl.Shapes(shapeNum).AnimationSettings.Animate = msoTrue Then
                animationNum = animationNum + 1
                sl.Shapes(shapeNum).Delete
                animationNum = animationNum + 1
            End If
            shapeNum = shapeNum - 1
        Wend
   Next

   ActivePresentation.SaveAs "c:\dink_template\created_files", ppSaveAsPNG, msoTrue

   If animationNum <> 0 Then
        Application.CommandBars.ExecuteMso "Undo"
        'to make the code stop for 5 seconds
        waitTime = 5
        Start = Timer
        While Timer < Start + waitTime
        Wend
   End If
   ' Here the code continues doing several things

我也尝试使用MsgBox或其他方式来阻止我在此处看到:http://www.pptfaq.com/FAQ00466_Put_your_macro_to_Sleep.htm

但没有什么可行的,它只会停留5秒,但是在我完成代码之前撤消不起作用。什么工作是使用调试器。如果我使用调试器停止它它可以工作,但我想在不使用调试器的情况下执行它,因为当我将代码作为宏放置时我将无法使用它。

1 个答案:

答案 0 :(得分:2)

好的我认为我找到了解决方案。只是在Application.CommandBars.ExecuteMso“Undo”之后使用DoEvents这解决了这个问题。希望至少这会对某人有所帮助。