我总体上想要实现的目标是,在文档上有一个框来保存数据库类型,当有人选择该数据库类型时,该文档将隐藏/显示某些部分。
现在我的问题是我似乎无法抓住我创建的列表框ContentControl。
我有一个带有标签boxDB的列表框ContentControl。
目前这就是我能得到的
Sub ListBox_AfterUpdate()
Dim box
Set box = ActiveDocument.SelectContentControlsByTag("boxDB")
End Sub
我已经尝试了几项使用box的尝试,以使其具有数据。我的第一个假设是,由于它是一个集合,所以我将仅使用项的第一个索引来查找第一个项。但是它始终表示该索引处没有项。
我应该使用另一种方法来获取设置的值吗?
答案 0 :(得分:2)
为了通过标签访问控件及其功能,请阅读reference documentation for SelectContentControlsByTag
。这表明返回的对象是与该标签匹配的控件的 collection ,因此很明显,您可能有多个具有相同标签字符串的控件。
在所有代码中always using Option Explicit
并通过用类型声明每个变量,可以极大地帮助您自己。这样,您可以使用VBA编辑器的Intellisense功能来揭示编写代码时可用的方法和属性。
假设您的ContentControl
已使用标签建立(并且您只有一个带有该标签的控件
Option Explicit
Sub SetupListbox()
Dim theControls As ContentControls
Dim box As ContentControl
Set theControls = ThisDocument.SelectContentControlsByTag("boxDB")
Set box = theControls.Item(1)
box.DropdownListEntries.Add "Red"
box.DropdownListEntries.Add "Green"
box.DropdownListEntries.Add "Blue"
box.DropdownListEntries.Add "Yellow"
box.DropdownListEntries.Add "Orange"
End Sub
Sub GetSelectedItem()
Dim theControls As ContentControls
Dim box As ContentControl
Set theControls = ThisDocument.SelectContentControlsByTag("boxDB")
Set box = theControls.Item(1)
Debug.Print box.Range.Text
End Sub