是否可以识别在powerpoint演示文稿上触发鼠标悬停的形状ID。
我想要做的是在带有标题的幻灯片上有一系列形状,当用户使用鼠标悬停形状时,我想使用VBA在页面的另一部分显示有关形状的更多详细信息,可能是单独的帮助文本框。然后,我可以使用选定的形状ALt Text显示在帮助框中。我看不到的是如何识别触发鼠标悬停宏的形状。这可能吗?如果我可以识别触发动作的形状,那么我可以获得有关该形状的信息。
答案 0 :(得分:2)
PowerPoint中的Shape对象不允许您像通常使用VBA代码中的其他对象那样与其事件进行交互。暴露的唯一两个“事件”实际上不是VBA事件。它们是一个名为Actions的特殊类,它们是'ppMouseOver'和'ppMouseClick'。如果您事先知道有关形状及其相应信息的所有信息,您可以编写一些代码来做您想做的事情,但它们都是硬编码的,这可能不是您想要的。
演示开始时你可以运行这样的例程:
Sub SetActionsRoutine()
Shape1.ActionSettings(ppMouseOver).Action = ppActionRunMacro
Shape1.ActionSettings(ppMouseOver).Run = "showInformation1"
Shape2.ActionSettings(ppMouseOver).Action = ppActionRunMacro
Shape2.ActionSettings(ppMouseOver).Run = "showInformation2"
...
...
End Sub
然后,无论何时执行这些形状的MouseOver,都会运行以下一个例程。
Sub showInformation1()
myTextBox.Text = Shape1.AlternativeText
End Sub
Sub showInformation2()
myTextBox.Text = Shape2.AlternativeText
End Sub
这是非常有限的,需要为幻灯片上的每个形状编写子程序。可能不是你想要的方法,但是再次使用PowerPoint,你的选择非常有限。
答案 1 :(得分:0)
StackOverflow新手,回答迟到,但你可以这样做:
Sub RespondToShape(oSh as Shape) MsgBox“你点击了”& oSh.Name 结束子
指定要与“运行宏”的“操作”设置进行交互的每个形状,然后选择“RepondToShape”作为宏。