如何通过单击Word 2010复选框运行VBA宏?

如何通过单击Word 2010复选框运行VBA宏?,vba,checkbox,ms-word,word-2010,Vba,Checkbox,Ms Word,Word 2010,我想在单击Word 2010中的复选框时运行宏 请注意,我既不想要“遗留表单”复选框,也不想要“ActiveX”复选框它们只在某些“受保护的文档模式”下工作,看起来很难看,但我想要新的,在您编写文档时可以选择和取消选择,而且对我来说更好看 我知道,对于传统表单,您可以在输入表单元素时直接插入宏,也可以在离开表单元素时直接插入宏,并且可以像VBA一样捕获事件 Sub CheckboxXY_Click() 但这对Word 2010复选框不起作用,即使我给它们一个描述和标记名 重复:这些是我想要使用

我想在单击Word 2010中的复选框时运行宏

请注意,我既不想要“遗留表单”复选框,也不想要“ActiveX”复选框它们只在某些“受保护的文档模式”下工作,看起来很难看,但我想要新的,在您编写文档时可以选择和取消选择,而且对我来说更好看

我知道,对于传统表单,您可以在输入表单元素时直接插入宏,也可以在离开表单元素时直接插入宏,并且可以像VBA一样捕获事件

Sub CheckboxXY_Click()
但这对Word 2010复选框不起作用,即使我给它们一个描述和标记名

重复:这些是我想要使用的表单(以防有人建议我使用遗留表单):

这就是它们在文档中的外观(鼠标悬停):


我不敢相信我是第一个尝试这个的人…

请确保转到VBA项目中的文档并选择“ContentControlOnener”

您必须使用类似contentcontrol.Title的方法指定所需的contentcontrol,以指定哪个复选框激活代码的哪个部分,如下面的示例所示。(我还输入了代码,以验证该复选框是否已在示例中选中)


微软仍然没有让编程
内容控件变得容易。但是,你应该这样做。这应该是一个好的开始,也许是一个循环?伪代码:while(!checkbox.checked){donothing}做某事
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