VBA - Ошибка времени выполнения при нажатии на поле расширенного текста в ms-word - PullRequest
0 голосов
/ 28 марта 2019

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

В мс-слове я сделал формуПервоначально я хотел, чтобы определенные аспекты формы скрывались / отображались на основе различных взаимодействий с формой (код ниже), который, с некоторой помощью из другого поста, работает нормально, но теперь я добавил текстовые поля, которыевызывает ошибки во время выполнения.

Теперь моя проблема в том, что функция ContentControlOnExit применяется, когда пользователь щелкает текстовое поле, к которому я хотел применить только когда пользователь щелкает из чечкбокса, что вызывает ошибки во время выполнения.

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)

    Dim bChecked As Boolean
    bChecked = (ContentControl.Checked = True)

    If ContentControl.Title = "checkbox1" Then
        ActiveDocument.Bookmarks("approve").Range.Font.Hidden = bChecked
    End If

    If ContentControl.Title = "checkbox2" Then
        ActiveDocument.Bookmarks("sign1").Range.Font.Hidden = bChecked
        ActiveDocument.Bookmarks("sign2").Range.Font.Hidden = bChecked
    End If

    If ContentControl.Title = "checkbox3" Then
        ActiveDocument.Bookmarks("note").Range.Font.Hidden = bChecked
    End If

End Sub

Можно ли добавить какое-либо простое утверждение, чтобы оно не выполняло эту проверку при щелчке по текстовому полю?

1 Ответ

0 голосов
/ 28 марта 2019

Вы можете использовать свойство Type элемента управления контентом, чтобы проверить, установлен ли он флажок: https://docs.microsoft.com/en-us/office/vba/api/word.contentcontrol.type

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, _
                                          Cancel As Boolean)
    'exit if the control is not a checkbox
    If ContentControl.Type <> wdContentControlCheckbox Then Exit Sub

    'rest of your code here         

End Sub
...