PowerPoint - 如何在后续幻灯片中显示幻灯片 1 ComboBox 中的值?
PowerPoint - How to display the Value from Slide 1 ComboBox in following slides?
我想在第一张幻灯片上 select "Type" 演示文稿,例如 ActiveX 中的 "Private"、"Public"、"Confidential" 等组合框,并在 ActiveX 文本框的未来幻灯片底部显示 selected 值。
我的 Slide 1 Combobox 工作正常。我 运行 演示文稿、获得焦点、下拉和 select 我的价值。是 ComboBox1.
我似乎找不到在以后的幻灯片中引用该值的技巧。 vb 中的极新手。不确定我是否正确使用 PowerPoint vb 编辑器。似乎我的 code/values 仅限于当前幻灯片,而不是未来的幻灯片。
在幻灯片 2 上,我定义了 TextBox1。我可以用 TextBox1.Value = "This is a " & ComboBox1 & "slide." 来获取它的值。但所有显示的都是 "This is a slide"。我已经尝试了所有我无法找到引用第一张幻灯片 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 上的 ComboBox 设置 幻灯片 2 上 TextBox 中的文本,那么您需要您的代码来执行此操作。除非您手动编辑其文本,否则 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
注意:Option Explicit
是一种强制 你声明所有变量的方法。它不会根据任何工作表的 Shapes
编译字符串文字名称,但它会阻止您在不存在此类对象的幻灯片模块中使用像 ComboBox1
这样的变量名称。
我想在第一张幻灯片上 select "Type" 演示文稿,例如 ActiveX 中的 "Private"、"Public"、"Confidential" 等组合框,并在 ActiveX 文本框的未来幻灯片底部显示 selected 值。
我的 Slide 1 Combobox 工作正常。我 运行 演示文稿、获得焦点、下拉和 select 我的价值。是 ComboBox1.
我似乎找不到在以后的幻灯片中引用该值的技巧。 vb 中的极新手。不确定我是否正确使用 PowerPoint vb 编辑器。似乎我的 code/values 仅限于当前幻灯片,而不是未来的幻灯片。
在幻灯片 2 上,我定义了 TextBox1。我可以用 TextBox1.Value = "This is a " & ComboBox1 & "slide." 来获取它的值。但所有显示的都是 "This is a slide"。我已经尝试了所有我无法找到引用第一张幻灯片 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 上的 ComboBox 设置 幻灯片 2 上 TextBox 中的文本,那么您需要您的代码来执行此操作。除非您手动编辑其文本,否则 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
注意:Option Explicit
是一种强制 你声明所有变量的方法。它不会根据任何工作表的 Shapes
编译字符串文字名称,但它会阻止您在不存在此类对象的幻灯片模块中使用像 ComboBox1
这样的变量名称。