我想在第一张幻灯片中选择演示文稿的“类型”,例如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
答案 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
这样的变量名称。