Невозможно получить список с помощью Visual Basic в документе Word - PullRequest
2 голосов
/ 22 апреля 2019

Моя цель для всего, что я пытаюсь сделать, состоит в том, чтобы иметь один блок в документе, который содержит тип базы данных, и когда кто-то выбирает этот тип базы данных, документ будет скрывать / показывать определенные разделы.

Что ж, моя проблема сейчас заключается в том, что я не могу захватить список со списком ContentControl, который я создал.

У меня есть список ContentControl с тегом boxDB.

В настоящее время это все, что я могу получить

Sub ListBox_AfterUpdate()

 Dim box
 Set box = ActiveDocument.SelectContentControlsByTag("boxDB")


End Sub

Я пробовал несколько вещей с коробкой, чтобы попытаться получить данные. Мое первое предположение состояло в том, что, поскольку это коллекция, я бы просто нашел первый элемент, используя первый индекс элементов ... но всегда говорится, что в этом индексе нет элемента.

Есть ли другой метод, который я должен использовать, чтобы получить значение, которое было установлено?

1 Ответ

2 голосов
/ 23 апреля 2019

Чтобы получить доступ к элементу управления и его функциям по тегу, прочитайте справочную документацию для SelectContentControlsByTag. Это показывает, что возвращаемый объект представляет собой набор элементов управления, соответствующих тегу, поэтому очевидно, что у вас может быть несколько элементов управления с одинаковой строкой тега.

Вы сильно поможете себе, всегда используя Option Explicit во всем своем коде и определенно объявляя каждую переменную с типом. Таким образом, вы можете использовать функцию Intellisense редактора VBA, чтобы узнать, какие методы и свойства доступны при написании кода.

Предполагая, что ваш 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...