vba - 无法在 Word 文档中使用 Visual Basic 抓取列表框

标签 vba ms-word

我的总体目标是在文档上有一个包含数据库类型的框,当有人选择该数据库类型时,文档将隐藏/显示某些部分。

我现在的问题是,我似乎无法获取我创建的列表框 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/

相关文章:

vba - MS Access VBA 代码编辑器字符编码和复制/粘贴

mysql - 使用 VBA 执行在文本框中编写的 SQL

excel - 如何从包装单元格中获取前两行文本?

javascript - Shift + Enter 是垂直制表符,但不是新段落

ruby-on-rails - 在 Ruby 中以编程方式输出 Word 文档格式文件的最佳方法是什么?

c# - 如何使用 Word API 以编程方式打开页面顶部带有书签的文档?

vba - 动态格式化为表格 Excel VBA

excel - 如何使用命名范围/数组自动过滤表?

delphi - 用于捕获 MSWord 文档事件的 IAdviseSink 设置

c# - 使用 Interop.Word,有没有办法进行替换(使用 Find.Execute)并保持原始文本的对齐方式?