【问题标题】:Using VBA to change z order kills animation triggers (powerpoint)使用 VBA 更改 z 顺序会杀死动画触发器(powerpoint)
【发布时间】:2014-01-28 19:49:31
【问题描述】:

我有一个 sub 来导入图像并将其放置在一个正方形后面,然后单击它会消失(单击时会触发消失动画)。

但是在我运行 sub 之后,触发器停止工作。经过大量搜索,我发现这是由更改 Z 顺序的部分引起的。如果我删除这部分子,一切正常,但不幸的是,这并没有多大用处,因为图像位于应该显示它的正方形前面。

我对此很陌生,所以如果有人能对此有所了解(或者更好地提出解决方案!),我将不胜感激。

谢谢

马特

 Dim mySld As Slide
 Dim myShp As ShapeRange
 Dim i As Integer

 Set mySld = ActivePresentation.Slides.FindBySlideID(256)

 Set myShp = mySld.Shapes.Paste

    With myShp
        .Name = "Quiz_Image_" & i
        .Left = 70
        .Top = 75
        .LockAspectRatio = msoTrue
        .Width = 425
        .ZOrder msoSendToBack
    End With

If myShp.Height > 275 Then
    myShp.Height = 275
End If

【问题讨论】:

    标签: vba animation powerpoint z-order


    【解决方案1】:

    是的,设置 ZOrder 会重置触发器。我能想到的唯一选择(除非其他人指出更好的解决方案)是使用 .AnimationSettings 从它自己的代码启动动画。例如

    Option Explicit
    
    Sub Sample()
        Dim mySld As Slide
        Dim myShp As ShapeRange
        Dim i As Integer
    
        Set mySld = ActivePresentation.Slides(1)
    
        Set myShp = mySld.Shapes.Paste
    
        With myShp
            .Name = "Quiz_Image_" & i
            .Left = 70
            .Top = 75
            .LockAspectRatio = msoTrue
            .Width = 425
            .ZOrder msoSendToBack
        End With
    
        If myShp.Height > 275 Then
            myShp.Height = 275
        End If
    
        mySld.Shapes("Shape Name").AnimationSettings.Animate
    End Sub
    

    编辑

    也看到这个有趣的read

    【讨论】:

    • 这真的很有帮助。感谢您如此快速的回答,并且很有魅力。唯一的问题(请不要觉得你必须回答——你已经非常有帮助了)是实际上有 20 个方块需要动画。有没有办法做一个版本的.Shapes([我刚刚点击的]).AminationSettings.Animate?显然我可以为每个单独写一个子,但它看起来相当优雅!
    • 您可以.Selection.ShapeRange(1) 获取当前形状。您可能还想查看THIS
    • 非常感谢您提供的所有帮助 - 我花了好几个小时才走到这一步,我认为这一切都被浪费了。
    猜你喜欢
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多