【问题标题】:How do you ignore earlier content control using VBA in Microsoft Word?您如何忽略在 Microsoft Word 中使用 VBA 的早期内容控制?
【发布时间】:2017-12-27 14:55:41
【问题描述】:

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

【问题讨论】:

    标签: excel vba ms-word word-contentcontrol


    【解决方案1】:

    我不熟悉“内容控制”或 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      相关资源
      最近更新 更多