2014-01-30 4 views
6

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

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

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

Sub CheckboxXY_Click() 

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

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

Word 2010 checkbox

И вот как они выглядят в документе (с наведению мыши):

enter image description here

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

+1

MS по-прежнему не позволяет программировать 'Content Controls'. Однако вы должны [проверить это] (http://gregmaxey.mvps.org/word_tip_pages/content_control_custom_events.html). Это должно быть хорошим началом. –

+0

может быть петля? псевдокод: в то время как (checkbox.checked!) { ничего не делать } сделать что-то – Mana

ответ

3

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

Вы должны указать, какие ContentControl вы хотите, используя что-то вроде 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 
Смежные вопросы