如何在幻灯片播放后在PowerPoint上删除动画而不使用带有VBA的.AddShape

时间:2018-02-23 00:42:44

标签: vba animation powerpoint-vba

这是我的代码:(使用PowerPoint 2016)

Sub MacroTest()
Dim Shp As Shape
Dim effNew As Effect
Dim sldOne As Slide

Set sldOne= ActivePresentation.Slides(1)
Set Shp = ActivePresentation.Slides(1).Shapes(2)
Set effNew = sldOne.Timeline.MainSequence _ 
.AddEffect(Shape:=Shp, _ 
effectid:=msoAnimEffectSpin, _ 
Trigger:=msoAnimTriggerWithPrevious)

End Sub

我使用此代码的目的是看看我是否可以将其应用于PowerPoint游戏。我希望能够让用户点击一个按钮来旋转一个框,然后后立即删除动画,这样如果他们再次点击它,它就不会玩两个或者更多旋转动画。此外,我希望删除动画,以便动画窗格中不会有数百个自旋动画。

我见过的大多数例子都使用.AddShape,因为动画会随着形状消失 - 但是,将动画应用到我在设计游戏时可以看到并与之交互的现有形状会更容易。

我知道这可以在没有VBA的情况下使用触发器实现,但是我最终希望在我得到它之后将if语句和更多代码合并到一起。

我感谢任何帮助,我对VBA很新,所以它意味着很多。

1 个答案:

答案 0 :(得分:0)

好的,我明白了。这适用于遇到类似问题的任何人。

代码:

Sub MacroTest

Dim Shp As Shape
Dim effNew As Effect
Dim sldOne As Slide

Dim time As Date
Dim count As Integer

Set sldOne = ActivePresentation.Slides(1)
Set Shp = ActivePresentation.Slides(1).Shapes(2)
Set effNew = sldOne.TimeLine.MainSequence _
.AddEffect(Shape:=Shp, _
effectid:=msoAnimEffectSpin, _
Trigger:=msoAnimTriggerWithPrevious)

time = Now()
count = 2

time = DateAdd("s", count, time)

Do Until time < Now()
DoEvents

With effNew
    With ActivePresentation.Slides(1).Shapes(4). _
    TextFrame.TextRange
        .Text = Format((time - Now()), "hh:mm:ss")
        If .Text = ("00:00:00") Then
            effNew.Delete
        Else
        End If
    End With
End With

Loop

End Sub

所以,我要做的就是创建一个计时器,持续时间和我正在使用的旋转动画一样长。然后我使用if语句来计时到达00:00:00以删除效果。希望这会有所帮助。