我想在第一张幻灯片上选择演示文稿的“类型”,例如 ActiveX 组合框中的“私人”、“公共”、“机密”等,并在 ActiveX 文本框中的未来幻灯片底部显示所选值.
我的 Slide 1 Combobox 工作正常。我运行演示文稿,获得焦点,下拉并选择我的值。它是 ComboBox1。
我似乎找不到在以后的幻灯片中引用该值的技巧。vb 中的新手。不确定我是否正确使用 PowerPoint vb 编辑器。似乎我的代码/值仅限于当前幻灯片而不是将来的幻灯片。
在幻灯片 2 上,我定义了 TextBox1。我可以用 TextBox1.Value = "This is a " & 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
如果您打算让幻灯片 1 上的 ComboBox设置幻灯片 2 上 TextBox 中的文本,那么您需要您的代码来执行此操作。TextBox_Change
除非您手动编辑其文本,否则该事件不会触发(我测试了您的代码,它可以达到这种效果,但这可能不是您想要的)。所以,问题是你从来没有为TextBox
幻灯片 2 上的分配任何值。
您可能可以删除TextBox_Change
Slide 2 上的事件过程,我怀疑您仅将其用于调试目的。
使用该ComboBox_Change
事件将文本分配给 Slide 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
注意:Option Explicit
是一种强制您声明所有变量的方法。它不会针对Shapes
任何工作表的编译字符串文字名称,但它会阻止您使用变量名称,例如ComboBox1
在不存在此类对象的幻灯片模块中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句