我想我有它的工作! 经过一夜好眠,我又试了一次。我一直在复制并重命名隐藏代码和形状。选择框时,这并未显示最终形状。我没有复制,而是插入了一个似乎有效的新的最终形状。
我还删除了“让我隐形”代码,而是使用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