Word VBA - Развернуть заголовок, если установлен определенный флажок? - PullRequest
0 голосов
/ 21 декабря 2018

Используется VB для Excel, но плохо знаком с VB для Word.Я не уверен, как расширить заголовок, если определенный флажок помечен как истинный.Это код, который у меня есть в настоящее время, и я получаю ошибку во время выполнения о том, что запрошенный элемент коллекции не существует, но я назвал CheckBox в окне свойств элемента управления.Я использую версию Microsoft Word 1808 (сборка 10730.20262 «нажми и работай»).

Sub Macro1()

If ActiveDocument.FormFields("Licensing_1").CheckBox.Value = True Then
    Do Until Selection.Find.Found = False
        If Selection.Text Like "Licensing Discovery Questions" Then
        Selection.Find.Style = ActiveDocument.Styles("Heading 1")
        Selection.Find.Execute
            Else: Selection.Paragraphs(1).CollapsedState = True
        Selection.Find.Style = ActiveDocument.Styles("Heading 1")
        Selection.Find.Execute
    End If
Loop
End If

End Sub

1 Ответ

0 голосов
/ 21 декабря 2018

В отличие от полей формы, несколько элементов управления содержимым Word могут иметь одно и то же обозначение (имя - фактический термин Title).По этой причине невозможно использовать строку в качестве значения индекса - она ​​не гарантируется быть уникальной.

По этой причине необходимо использовать метод SelectContentControlsByTitle (или SelectContentControlsByTag) для выборадо объекта управления контентом.Метод возвращает Collection элементов управления содержимым - все они имеют одинаковые заголовок или тег.(Примечание: они чувствительны к регистру!).

Если код должен работать со всеми этими элементами управления содержимым, используйте цикл For Each с коллекцией.

Если код долженработать только с одним элементом управления контентом (например, первым), это можно указать с помощью свойства ContentControls.Item.

Предполагается, что в документе имеется только один флажок с обозначением "Лицензирование_1":

Sub CheckBox_CC()
    Dim ccCheckBox As Word.ContentControl
    Dim doc As Word.Document

    Set doc = ActiveDocument
    Set ccCheckBox = doc.SelectContentControlsByTitle("Licensing_1").Item(1)

    If ccCheckBox.Checked Then
        'Do things here
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...