Подпрограмма запуска, когда пользователь покидает поле даты. ContentControl Word VBA - PullRequest
0 голосов
/ 09 мая 2019

Редактировать: я обновил пост с дополнительной информацией.

У меня есть Контент Контроля внутри заголовка в Word, в котором есть средство выбора даты. Я пытаюсь запустить событие _ContentControlOnExit, когда пользователь покидает фокус (размытие) средства выбора.

Предположим, я вручную создал элемент управления контентом и назначил ему средство выбора даты. Я также отметил это значением date.

Я хочу, чтобы при каждом изменении даты я выполнял подпрограмму, которая вставит текстовое значение в другой ContentControl с тегом tide-level. Я попробовал приведенный ниже код безуспешно.

Обратите внимание, что дата ContentControl находится внутри заголовка в документе Word.

enter image description here

  Private Sub ActiveDocment_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
        If (ContentControl.Type = wdContentControlDate) Then
            MsgBox "Let's do it! Write the tide levels"

            dateObj = ActiveDocument.SelectContentControlsByTag("tide-level")
            dateObj.Range.Text = "wwwoohooo Tide Levels!"

            Cancel = True
        End If
    End Sub

Я помню, как читал где-то, что когда у вас есть контент в шапке, кажется, что все становится проблематично ...

Есть идеи?

P.S: В настоящее время используется Word 365 - VBA

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Исходя из названия процедуры в вопросе - ActiveDocment_ContentControlOnExit - кажется, что обработчик событий не был сгенерирован автоматически Word и , поэтому его нет в модуле класса ThisDocumentдокумент, который содержит элементы управления контентом.Имя обработчика события (генерируемого редактором VBA) обычно Document_ContentControlOnExit.

Обработчики событий управления содержимым должны быть в ThisDocument.Теоретически их можно вводить вручную, но Word не всегда распознает обработчики событий, введенные вручную.Поэтому лучше использовать автоматическую генерацию «заглушки» редактора VBA для получения структур:

  1. Откройте модуль ThisDocument для документа, который содержит элемент управления содержимым.
  2. В окне кодовой страницы в левом верхнем углу выберите «Документ» из выпадающего списка.
  3. в правом верхнем углу выберите событие для вставки.

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

Примечание о контроле содержимого в заголовке: Это событие срабатывает до тех пор, пока фокус при выходе остается в заголовке.Однако, если пользователь дважды щелкает в теле документа, чтобы выйти из заголовка, событие не запускается.(По крайней мере, не в моих тестах.) Если это проблема, вы можете поместить это поле в тело документа со вторым связанным элементом управления содержимым в заголовке, чтобы отразить выбор.Это немного сложнее (для управления связанной информацией требуется пользовательская XML-часть в документе), но версия Word, которую вы используете, должна иметь инструмент для ее настройки.

0 голосов
/ 10 мая 2019

имя макроса должно быть:

Docment_ContentControlOnExit

НЕ

ActiveDocment_ContentControlOnExit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...