Powerpoint VBA在某些条件下显示和隐藏形状

时间:2016-03-05 11:20:06

标签: powerpoint-vba

我想我有它的工作! 经过一夜好眠,我又试了一次。我一直在复制并重命名隐藏代码和形状。选择框时,这并未显示最终形状。我没有复制,而是插入了一个似乎有效的新的最终形状。

我还删除了“让我隐形”代码,而是使用David Marcovitz的代码来显示隐藏形状(下图)。我想我可能最终得到了相当混乱和冗长的代码,但它似乎正在起作用。如果有人可以帮助解决一些不那么繁琐的代码,我仍会感激不尽。

Dim userName As String
Sub GetStarted()
    Initialize
    ActivePresentation.SlideShowWindow.View.Next
End Sub
Sub Initialize()
    ActivePresentation.Slides("Slide1") _
        .Shapes("a").Visible = True

我为每个形状添加了true或false。

几年前汤姆·诺兰(Tom Nolan)提出了一个问题:'如果VBA中的隐藏声明适用于Powerpoint'。

他的问题是:“我有4个盒子,我有动画,当它们被点击时,它们会淡出。是否有可能有一个宏可识别所有4个盒子何时消失,然后在第五个盒子中消失? 所以4个盒子在用户控制时消失,然后一旦它们全部消失,就会自动出现第五个盒子。“

编码是必需的,因为人们可以/将随机选择框。 Steve Rindsberg回答了一个代码(发布在下面)。

我已成功使用此功能(感谢Steve),但我想为此扩展选项。 例如用户随机点击1-4栏,然后出现第5栏,如Tom的场景。在同一幻灯片上,用户可以点击框6-9,当框6-9消失时,框10出现。可以按任何顺序单击框1-4和6-9。

这可以改变史蒂夫的代码吗?由于我对编码知识非常有限,我尝试了一些没有成功的事情。 提前致谢

史蒂夫的代码:

    ' Give each of the four shapes an action setting of Run Macro:  HideMe

    Sub HideMe(oSh As Shape)
        Dim oSl As Slide

    ' hide the clicked shape
        oSh.Visible = False

    ' test to see if all four shapes are hidden now
        ' edit to reflect the actual names of the shapes in use

    Set oSl = oSh.Parent    ' the slide containing the clicked shape
        With oSl
            If Not .Shapes("Rectangle 3").Visible Then
                If Not .Shapes("Rectangle 4").Visible Then
                    If Not .Shapes("Rectangle 5").Visible Then
                        If Not .Shapes("Rectangle 6").Visible Then
                            ' they're all hidden, so make the new shape visible
                            .Shapes("Rectangle 7").Visible = True
                        End If
                    End If

        End If
                End If

    ' Add this to handle the next four shapes

            If Not .Shapes("Rectangle 10").Visible Then
            If Not .Shapes("Rectangle 11").Visible Then
                If Not .Shapes("Rectangle 12").Visible Then
                    If Not .Shapes("Rectangle 13").Visible Then
                            ' they're all hidden, so make the new shape visible
                            .Shapes("Rectangle 13").Visible = True
                        End If
                    End If

                End If
            End If
        End With

    End Sub

    Sub MakeMeInvisible()
    ' run this after selecting the final shape
    ' to make it invisible to begin with
        ActiveWindow.Selection.ShapeRange(1).Visible = False
    End Sub

0 个答案:

没有答案