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

Vba PowerPoint-如何在以下幻灯片中显示幻灯片1组合框中的值?,vba,powerpoint,Vba,Powerpoint,我想在ActiveX组合框中选择第一张幻灯片的“类型”,如“私有”、“公共”、“机密”等,并在ActiveX文本框中的未来幻灯片底部显示所选值 我的幻灯片1组合框工作正常。我运行演示文稿,获得焦点,下拉并选择我的值。这是ComboBox1 我似乎找不到在未来的幻灯片中引用该值的技巧。非常熟悉vb。不确定我是否正确使用了PowerPoint vb编辑器。似乎我的代码/值仅限于当前幻灯片,而不是未来的幻灯片 在幻灯片2中,我定义了TextBox1。我可以让它通过TextBox1.value=“这是一

我想在ActiveX组合框中选择第一张幻灯片的“类型”,如“私有”、“公共”、“机密”等,并在ActiveX文本框中的未来幻灯片底部显示所选值

我的幻灯片1组合框工作正常。我运行演示文稿,获得焦点,下拉并选择我的值。这是ComboBox1

我似乎找不到在未来的幻灯片中引用该值的技巧。非常熟悉vb。不确定我是否正确使用了PowerPoint vb编辑器。似乎我的代码/值仅限于当前幻灯片,而不是未来的幻灯片

在幻灯片2中,我定义了TextBox1。我可以让它通过TextBox1.value=“这是一张”&combox1&“幻灯片”获取一个值。但显示的只是“这是一张幻灯片”。我已经尝试了所有我找不到引用第一个幻灯片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

听起来您已经完成了大部分工作,只需要知道如何从组合框中提取所选值,因此:

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

如果您的目的是让幻灯片1上的组合框设置幻灯片2上文本框中的文本,那么您需要您的代码来实现这一点。
TextBox\u Change
事件不会触发,除非您手动编辑它的文本(我测试了您的代码,它可以达到这个效果,但这可能不是您想要的)。因此,问题是您从未为幻灯片2上的
文本框
指定任何值

您可能可以删除幻灯片2上的
TextBox\u Change
事件过程,我怀疑您仅将其用于调试目的

使用
组合框\u Change
事件将文本分配给幻灯片2上的TextBox对象。在
幻灯片1
模块中添加此代码:

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
是一种强制您声明所有变量的方法。它不会针对任何工作表的
形状编译字符串文字名称
,但会阻止您在不存在此类对象的幻灯片模块中使用变量名称,如
ComboBox1

如果在代码模块中使用
Option Explicit
?如果没有,是否会因为
ComboBox1
可能超出范围而出现错误?我没有使用Option Explicit。似乎是这样。我会试试的,试试看。使用ActivePresentation.Slides(1).Shapes(“ComboBox1”).OLEFormat.Object.Value作为字段获取了“在形状集合中找不到项目Combox1”。在离开幻灯片1之前,我是否应该创建一个与之相等的新字段?请修改您的问题,以包含您试图使用的代码:)使其更易于辅助。谢谢出现“在形状集合中找不到项ComboBox1”错误。正在尝试使用Option Explicit。Option Explicit对“not is Shapes collection”错误没有帮助。也许我会尝试在幻灯片1中添加一个变量,使其等于您的表达式,并在后面的幻灯片中查看该变量是否可用。