0

我有一个 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 被选中后才会触发代码……但之前的文本和日期字段给了我一个错误代码。有谁知道发生了什么?

4

1 回答 1

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.

于 2017-07-21T14:23:44.097 回答