5

我正在尝试编写一个可以在 PowerPoint 2007-2010 的编辑模式下调用的 vba 宏。

我可以轻松地将命令按钮添加到演示文稿中。但是,只有在幻灯片模式下才能单击此按钮来触发 vba 宏。

但是,我想做的是让这个按钮在编辑模式下触发相关的 vba 宏。在编辑模式下单击它可以让我更改它的大小等,但它不会调用宏。

另一方面,在 Excel 中,当我插入一个按钮时,我得到了完全预期的行为 -> 单击它会调用 vba 操作。

那么,如何在 PowerPoint 中的编辑视图期间创建一个调用 vba 宏的按钮(或其他具有相同作用的元素)。我能想到的唯一方法是使用功能区操作,但是在这种情况下这是不切实际的,因为宏将修改与按钮关联的形状,并且每张幻灯片可能有几个这样的形状,每个都应该有自己的按钮。

4

2 回答 2

0

我能想到的唯一方法是使用功能区操作,但是在这种情况下这是不切实际的,因为宏将修改与按钮关联的形状,并且每张幻灯片可能有几个这样的形状,每个都应该有自己的按钮。

根据您要执行的操作,启动宏的功能区按钮可能非常实用。宏可以对当前选择进行操作(并测试当前选择以确保它是适当的)。

With ActiveWindow.Selection.ShapeRange
  ' operate on the currently selected shapes
End with
于 2012-11-26T14:43:27.010 回答
0

只需在其他地方回答它也可以这样做,您只需下载此文件 http://www.officeoneonline.com/eventgen/EventGen20.zip 安装它 创建一个类模块 粘贴此代码 Option Explicit

Public WithEvents PPTEvent As Application



Private Sub Class_Initialize()
End Sub


Private Sub PPTEvent_WindowSelectionChange(ByVal Sel As Selection)
If Sel.Type = ppSelectionShapes Then
    If Sel.ShapeRange.HasTextFrame Then
        If Sel.ShapeRange.TextFrame.HasText Then
           If Trim(Sel.ShapeRange.TextFrame.TextRange.Text) = "Text inside your shape" Then
              Sel.Unselect
              yoursub
           End If
       End If
     End If

   End If

结束子

插入一个新模块粘贴此代码

将 cPPTObject 调暗为新的 Class1

将 TrapFlag 暗淡为布尔值

 Sub TrapEvents()
      If TrapFlag = True Then
         MsgBox "Already Working"
         Exit Sub
      End If
    Set cPPTObject.PPTEvent = Application
    TrapFlag = True
 End Sub




 Sub ReleaseTrap()
      If TrapFlag = True Then
         Set cPPTObject.PPTEvent = Nothing
         Set cPPTObject = Nothing
         TrapFlag = False
      End If
 End Sub

 Sub yoursub()
         MsgBox "Your Sub is working"
 End Sub

现在运行 TrapEvents,只要您单击带有该文本的形状,您的子程序就会运行 Credits to the person who write this http://www.officeoneonline.com/eventgen/eventgen.html

于 2020-12-12T20:51:07.983 回答