【问题标题】:How to run VBA script by clicking on ContentControl Checkbox in Word如何通过单击 Word 中的 ContentControl 复选框来运行 VBA 脚本
【发布时间】:2020-02-28 19:11:28
【问题描述】:

我正在尝试通过单击 contentcontrol 复选框来检查所有 contentcontrol 复选框。但是如何通过单击带有标签 D1 的复选框来设置事件以运行此脚本

If ActiveDocument.SelectContentControlsByTag("D1")(1).Checked = True Then
   ActiveDocument.SelectContentControlsByTag("D1_M1")(1).Checked = True
   ActiveDocument.SelectContentControlsByTag("D1_M2")(1).Checked = True
   ActiveDocument.SelectContentControlsByTag("D1_M3")(1).Checked = True
End If
If ActiveDocument.SelectContentControlsByTag("D1")(1).Checked = False Then
   ActiveDocument.SelectContentControlsByTag("D1_M1")(1).Checked = False
   ActiveDocument.SelectContentControlsByTag("D1_M2")(1).Checked = False
   ActiveDocument.SelectContentControlsByTag("D1_M3")(1).Checked = False
End If

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    您可以使用文档事件,

    Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
        If ContentControl.Title = "a1" Then
    
        End If
    End Sub
    

    或者您可以添加自定义事件处理程序,像这样。

    在标准模块中有以下内容。打开文档时需要运行此代码。

    Public cls_CustomEventHandler As clsCustomEventHandler
    
    Sub SetUpDocumentContentEventHandler()
    
    Set cls_CustomEventHandler = New clsCustomEventHandler
    
    Set cls_CustomEventHandler.wdDocumnetToListenTo = ActiveDocument
    
    End Sub
    

    然后有一个类模块clsCustomEventHandler,代码如下

    Public WithEvents wdDocumnetToListenTo As Document
    
    Private Sub wdDocumnetToListenTo_ContentControlOnExit( _
                                    ByVal ContentControl As ContentControl, _
                                    Cancel As Boolean)
    
    If ContentControl.Title = "a1" Then
    
    End If
    
    End Sub
    

    【讨论】:

      【解决方案2】:

      尝试将以下内容添加到文档或其模板的“ThisDocument”代码模块中:

      Private Sub Document_ContentControlOnExit(ByVal CCtrl As ContentControl, Cancel As Boolean)
      With CCtrl
        If .Title = "D1" Then
          For i = 1 To 3
            ActiveDocument.SelectContentControlsByTag("D1_M" & i)(1).Checked = .Checked
          Next
        End If
      End With
      End Sub
      

      【讨论】:

        猜你喜欢
        • 2014-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-05
        • 2018-12-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多