Как запустить макрос VBA, установив флажок Word 2010?

Я хочу запускать макрос, когда устанавливаю флажок в Word 2010.

Обратите внимание, что мне не нужны флажки "Устаревшие формы" и "ActiveX"! Они работают только в каком-то "режиме защищенных документов" и выглядят некрасиво, но мне нужны новые, которые можно выбрать и не выбраны только тогда, когда вы пишете документ, и это выглядит намного лучше для меня.

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

Sub CheckboxXY_Click()

Но это не работает с флажками Word 2010, даже когда я даю им описание и имя тега.

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

Флажок Word 2010

А вот так они выглядят в документе (при наведении мыши):

введите здесь описание изображения

Не могу поверить, что я был первым, кто попробовал это...


person Ingmar    schedule 30.01.2014    source источник
comment
MS до сих пор не упростила программирование Content Controls. Однако вам следует проверить это. Это должно быть хорошим началом.   -  person Pankaj Jaju    schedule 30.01.2014
comment
может петля? Псевдокод: while(!checkbox.checked) { ничего не делать } что-то делать   -  person Mana    schedule 20.01.2015


Ответы (1)


Убедитесь, что вы переходите к документу в своем проекте VBA и выбираете «ContentControlOnEnter».

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

Private Sub Document_ContentControlOnEnter(ByVal ContentControl As ContentControl)
    If (ContentControl.Title = "Checkbox1" And ContentControl.Checked = True) Then
        MsgBox "YAAY", vbOKOnly, "Test1"
    End If
    If (ContentControl.Title = "Checkbox2" And ContentControl.Checked = True) Then
        MsgBox "BOOO", vbOKOnly, "Test2!"
    End If
End Sub
person IAWeir    schedule 10.02.2015