如何在Microsoft Word中忽略使用VBA的早期内容控件?

时间:2017-07-21 13:58:10

标签: excel vba ms-word word-contentcontrol

我有一个Word模板,我在文档中间有一个复选框内容控件。单击此复选框后,它会使用VBA触发一些命令。但是,我之前在文档中也有纯文本内容控件和日期选择器内容控件,这有助于为用户填写模板。选中这些框后,我不断收到错误消息“运行时错误6290 - 此属性仅适用于复选框内容控件”。

我的问题 - 有没有办法忽略早期的内容控制框,只在按下复选框时运行代码?

我的代码目前看起来像这样:

Private Sub Document_ContentControlOnEnter(ByVal ContentControl As ContentControl)
    If (ContentControl.Title = "Checkbox1" And ContentControl.Checked = True) Then
        *code in here*
    End If
End Sub

所以你会认为只有在检查Checkbox1后才会触发代码...但是早期的text和date字段会给我一个错误代码。有谁知道发生了什么事?

1 个答案:

答案 0 :(得分:0)

我不熟悉“内容控制”或Word VBA,但在Excel中,在编码.OnChange事件时,确保传入Sub的单元格是很重要的(你想要合作的人之一。我假设这里也是如此。

我的猜测是你的错误在

ContentControl.Checked = True

If语句的一部分,请尝试一下:

Private Sub Document_ContentControlOnEnter(ByVal ContentControl As ContentControl)
    If (ContentControl.Title = "Checkbox1") Then
      If ContentControl.Checked = True Then
        *code in here*
      End IF
    End If
End Sub

即,确保在测试之前查看复选框控件以查看是否已选中该复选框。

VBA 执行条件快捷方式,因此它将评估AND条件中的所有语句,即使第一个语句是False