我的总体目标是在文档上有一个包含数据库类型的框,当有人选择该数据库类型时,文档将隐藏/显示某些部分。
我现在的问题是,我似乎无法获取我创建的列表框 ContentControl。
我有一个带有标签 boxDB 的列表框 ContentControl。
目前我能得到的就是这些
Sub ListBox_AfterUpdate()
Dim box
Set box = ActiveDocument.SelectContentControlsByTag("boxDB")
End Sub
我已经用 box 尝试了几种方法来尝试让它获取数据。我的第一个假设是,由于它是一个集合,我只需使用项目的第一个索引来查找第一个项目..但它总是说该索引处没有项目。
我应该使用另一种方法来获取设置的值吗?
最佳答案
要通过标签访问该控件及其功能,请阅读 reference documentation for SelectContentControlsByTag
。这表明返回的对象是与标记匹配的控件的集合,因此显然您可能有多个具有相同标记字符串的控件。
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
关于vba - 无法在 Word 文档中使用 Visual Basic 抓取列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55800421/