Лучшим подходом (IMHO) было бы использование переменных документа, состояние которых можно проверить с помощью полей IF в документе таким образом, чтобы в зависимости от результата теста содержимое отображалось в «Применимо» или «Не применимо». в соответствующих случаях.
Например, предположим, что вы создаете переменную документа с именем 'Topic1', значения которой могут быть 1 или 0. В:
"Применимо" раздел, вы должны иметь поле IF, закодированное вдоль строк:
{IF {DOCVARIABLE Topic1} = 1 "Содержимое для отображения"}
"Не применимо msgstr "раздел, у вас есть поле IF, закодированное в виде строк:
{IF {DOCVARIABLE Topic1} = 0" Содержимое для отображения "}
где" Контент для отображения "одинаков в каждом поле. Чтобы упростить обработку, вы можете просто создать поля в разделе «Применимо», а затем скопировать их в раздел «Не применимо» и изменить значения от 1 до 0.
Если флажки используются, чтобы указать, является ли данный топ c применимо, код макроса может быть таким простым:
Private Sub CommandButton1_Click()
Dim Ctrl As Control: Const CtrlType As String = "CheckBox"
For Each Ctrl In UserForm1.Controls
If TypeName(Ctrl) = CtrlType Then
With Ctrl
If .Caption Like "Topic#*" Then
ActiveDocument.Variables(.Name).Value = .Value ^ 2
End If
End With
End If
Next
ActiveDocument.Fields.Update
End Sub
Примечание: Пары фигурных скобок (то есть '{}') для приведенных выше примеров - все созданный в самом документе, через Ctrl-F9 (Cmd-F9 на Ma c или, если вы используете ноутбук, вам может понадобиться Ctrl-Fn-F9); Вы не можете просто напечатать их или скопировать и вставить их из этого сообщения. Также нецелесообразно добавлять их через какие-либо стандартные диалоги Word. Все пробелы, представленные в полевых конструкциях, являются обязательными.
Подробнее об использовании переменных документа см. https://support.microsoft.com/en-us/help/306281/how-to-store-and-retrieve-variables-in-word-documents