是否可以识别在powerpoint演示文稿上触发鼠标悬停的形状ID?

时间:2011-03-23 11:57:28

标签: vba powerpoint mouseover

是否可以识别在powerpoint演示文稿上触发鼠标悬停的形状ID。

我想要做的是在带有标题的幻灯片上有一系列形状,当用户使用鼠标悬停形状时,我想使用VBA在页面的另一部分显示有关形状的更多详细信息,可能是单独的帮助文本框。然后,我可以使用选定的形状ALt Text显示在帮助框中。我看不到的是如何识别触发鼠标悬停宏的形状。这可能吗?如果我可以识别触发动作的形状,那么我可以获得有关该形状的信息。

2 个答案:

答案 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”作为宏。