PowerPoint-如何在以下幻灯片中显示幻灯片1组合框中的值?

时间:2018-08-18 13:58:55

标签: vba powerpoint powerpoint-vba

我想在第一张幻灯片中选择演示文稿的“类型”,例如ActiveX组合框中的“私人”,“公共”,“机密”等,并在以后的幻灯片的底部显示选定的值。一个ActiveX文本框。

我的Slide 1组合框工作正常。我运行演示文稿,获取焦点,下拉列表并选择我的值。是ComboBox1。

我似乎找不到在以后的幻灯片中引用“价值”的窍门。 VB中的新手。不确定我是否正确使用PowerPoint vb编辑器。似乎我的代码/值仅限于当前幻灯片,而不是将来的幻灯片。

在幻灯片2上,我定义了TextBox1。我可以使用TextBox1.Value =“这是一个&ComboBox1&”幻灯片。但是显示的只是“这是一张幻灯片”。我已经尝试了所有无法找到引用第一个幻灯片ComboBox1值的方法,但我做不到。

有可能吗?

谢谢!

插入源。

这正在处理幻灯片1。

Option Explicit
Private Sub ComboBox1_GotFocus()
If ComboBox1.ListCount = 0 Then AddDropDownItems
MsgBox "Currently:" & ComboBox1.Value
End Sub

Sub AddDropDownItems()
ComboBox1.AddItem "Private"
ComboBox1.AddItem "Confidential"
ComboBox1.AddItem "Secret"
ComboBox1.AddItem "Public"
ComboBox1.AddItem "Test"
ComboBox1.ListRows = 5
End Sub

Private Sub ComboBox1_LostFocus()
MsgBox "Changed to:" & ComboBox1.Value
End Sub

这不适用于幻灯片2:

Private Sub TextBox1_Change()
TextBox1.Value = "Change: " & 
ActivePresentation.Slides(1).Shapes("ComboBox1").OLEFormat.Object.Value & 
"is the Type"
End Sub

2 个答案:

答案 0 :(得分:1)

听起来好像您已经到了那里,只需要知道如何从组合框中提取所选值,所以:

Private Sub ComboBox1_Change()
    MsgBox ActivePresentation.Slides(1).Shapes("ComboBox1").OLEFormat.Object.Value
End Sub

答案 1 :(得分:0)

如果要在幻灯片1上设置组合框,请在幻灯片2上设置文本框内的文本,那么您需要编写代码。除非您手动编辑其文本,否则TextBox_Change事件将不会触发(我测试了您的代码,并且可以达到这种效果,但这可能不是您想要的)。因此,问题在于,您永远不会为幻灯片2上的TextBox分配任何值。

您可能可以删除幻灯片2上的TextBox_Change事件过程,我怀疑您只是将其用于调试目的。

使用ComboBox_Change事件将文本分配给幻灯片2上的TextBox对象。在您的Slide1模块中添加以下代码:

Private Sub ComboBox1_Change()
    ActivePresentation.Slides(2).Shapes("TextBox1").OLEFormat.Object.Value = Me.ComboBox1.Value
End Sub

要应用于所有后续幻灯片:

Private Sub ComboBox1_Change()
    Call UpdateOtherSlides()
End Sub
Private Sub UpdateOtherSlides()
    Dim s as Long
    Dim text as String
    Text = Me.ComboBox1.Value
    For s = 2 to ActivePresentation.Slides.Count
        On Error Resume Next 'In case no "TextBox1" exists on the slide
        ActivePresentation.Slides(s).Shapes("TextBox1").OLEFormat.Object.Value = text
    Next

End Sub

NB Option Explicit是一种强制声明所有变量的方法。它不会针对任何工作表的Shapes编译字符串文字名称,但是它将阻止您在不存在此类对象的幻灯片模块中使用像ComboBox1这样的变量名称。