2011-03-23 58 views
2

是否可以識別在PowerPoint演示文稿中觸發鼠標懸停的形狀ID。是否可以識別在PowerPoint演示文稿中觸發鼠標懸停的形狀ID?

我想要做的是在帶有標題的幻燈片上繪製一系列形狀,並且當用戶鼠標懸停形狀時,我想使用VBA在頁面的另一部分顯示有關形狀的更多細節,可能是一個單獨的幫助文本框。然後我可以使用選定的形狀ALt文字在幫助框中顯示。我無法看到的是如何確定觸發鼠標懸停宏的形狀。這可能嗎?如果我能夠識別觸發該動作的形狀,那麼我可以獲得有關該形狀的信息。

回答

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 

然後當你做了這些形狀的鼠標懸停,下面的程序之一將運行。

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

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

這是非常有限的,並要求你寫一個子程序在幻燈片上的各種形狀。可能不是您想要的方法,但再次,對於PowerPoint,您的選項非常有限。

+0

我以爲這麼多,我想知道如果我可以在Action中傳遞一個參數,所以調用「showInformation(n)」,但似乎代碼不允許這樣做。 非常感謝您抽出寶貴時間來探索此事。 此致敬禮 – icefeet 2011-03-23 14:18:13

0

新來的StackOverflow,來不及回答,但你可以這樣做:

子RespondToShape(OSH爲形狀) MSGBOX 「你點擊」 & oSh.Name 結束小組

分配各種形狀您想要與「運行宏」的「動作」設置進行交互,並選擇「RepondToShape」作爲宏。

相關問題