【问题标题】:Is it possible to identify the shape ID that triggers a mouseover on a powerpoint presentation?是否可以识别在 powerpoint 演示文稿上触发鼠标悬停的形状 ID?
【发布时间】:2011-03-23 11:57:27
【问题描述】:

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

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

【问题讨论】:

    标签: vba powerpoint mouseover


    【解决方案1】:

    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
    

    然后,每当您对这些形状进行鼠标悬停时,都会运行以下例程之一。

    Sub showInformation1()
        myTextBox.Text = Shape1.AlternativeText
    End Sub
    
    Sub showInformation2()
        myTextBox.Text = Shape2.AlternativeText
    End Sub
    

    这是非常有限的,需要您为幻灯片上的每个形状编写一个子例程。可能不是您想要的方法,但同样,对于 PowerPoint,您的选择非常有限。

    【讨论】:

    • 我想了很多,我想知道我是否可以在动作中传递一个参数,所以调用“showInformation(n)”,但似乎代码不允许这样做。非常感谢您花时间探索这个。问候
    【解决方案2】:

    StackOverflow 新手,回答迟了,但您可以这样做:

    Sub RespondToShape(oSh as Shape) MsgBox "你点击了" & oSh.Name 结束子

    将您想要与运行宏的动作设置交互的每个形状分配并选择 RepondToShape 作为宏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-13
      相关资源
      最近更新 更多