Как запустить скрипт VBA, установив флажок ContentControl в Word - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь проверить все флажки contentcontrol, установив флажок contentcontrol.Но как установить событие для запуска этого скрипта, установив флажок с тегом D1

If ActiveDocument.SelectContentControlsByTag("D1")(1).Checked = True Then
   ActiveDocument.SelectContentControlsByTag("D1_M1")(1).Checked = True
   ActiveDocument.SelectContentControlsByTag("D1_M2")(1).Checked = True
   ActiveDocument.SelectContentControlsByTag("D1_M3")(1).Checked = True
End If
If ActiveDocument.SelectContentControlsByTag("D1")(1).Checked = False Then
   ActiveDocument.SelectContentControlsByTag("D1_M1")(1).Checked = False
   ActiveDocument.SelectContentControlsByTag("D1_M2")(1).Checked = False
   ActiveDocument.SelectContentControlsByTag("D1_M3")(1).Checked = False
End If

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Попробуйте добавить следующее в модуль кода ThisDocument документа или его шаблона:

Private Sub Document_ContentControlOnExit(ByVal CCtrl As ContentControl, Cancel As Boolean)
With CCtrl
  If .Title = "D1" Then
    For i = 1 To 3
      ActiveDocument.SelectContentControlsByTag("D1_M" & i)(1).Checked = .Checked
    Next
  End If
End With
End Sub
0 голосов
/ 20 февраля 2019

Вы можете использовать события doucment,

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
    If ContentControl.Title = "a1" Then

    End If
End Sub

, или вы можете добавить пользовательский обработчик событий, например, так.

В стандартном модуле есть следующее.Этот код необходимо будет запустить при открытии документа.

Public cls_CustomEventHandler As clsCustomEventHandler

Sub SetUpDocumentContentEventHandler()

Set cls_CustomEventHandler = New clsCustomEventHandler

Set cls_CustomEventHandler.wdDocumnetToListenTo = ActiveDocument

End Sub

, а затем иметь модуль класса clsCustomEventHandler со следующим кодом

Public WithEvents wdDocumnetToListenTo As Document

Private Sub wdDocumnetToListenTo_ContentControlOnExit( _
                                ByVal ContentControl As ContentControl, _
                                Cancel As Boolean)

If ContentControl.Title = "a1" Then

End If

End Sub
...