【问题标题】:How to hide checkbox options when another checkbox is selected in ms-word在 ms-word 中选择另一个复选框时如何隐藏复选框选项
【发布时间】:2019-03-26 05:54:50
【问题描述】:

我正在尝试在 ms-word 中组合一个表单,其中希望如果用户选中 3 个复选框选项中的 1 个,则其他两个及其相邻的文本将被隐藏。

我知道如何隐藏内容,但我完全不熟悉 VBA/编程作为一个整体,所以我不太清楚我的 If/Else 循环中有什么问题,但它绝对不会显示/隐藏所有内容。

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)

If ContentControl.Title = "checkbox1" And ContentControl.Checked = True Then
    ActiveDocument.Bookmarks("Approve").Range.Font.Hidden = True
Else
    ActiveDocument.Bookmarks("Approve").Range.Font.Hidden = False
End If

If ContentControl.Title = "checkbox2" And ContentControl.Checked = True Then
    ActiveDocument.Bookmarks("Denied 1").Range.Font.Hidden = True
    ActiveDocument.Bookmarks("Denied 2").Range.Font.Hidden = True
Else
    ActiveDocument.Bookmarks("Sign1").Range.Font.Hidden = False
    ActiveDocument.Bookmarks("Sign2").Range.Font.Hidden = False
End If

If ContentControl.Title = "checkbox3" And ContentControl.Checked = True Then
    ActiveDocument.Bookmarks("pending").Range.Font.Hidden = True
Else
    ActiveDocument.Bookmarks("pending").Range.Font.Hidden = False
End If

End Sub

如果我只保留 if/else 部分之一,它确实可以正常工作,但是当我保留所有 3 个时,它就不起作用了。

非常感谢任何指导!

【问题讨论】:

    标签: vba checkbox ms-word ms-office


    【解决方案1】:

    这里:

    If ContentControl.Title = "checkbox1" And ContentControl.Checked = True Then
        ActiveDocument.Bookmarks("Approve").Range.Font.Hidden = True
    Else
        ActiveDocument.Bookmarks("Approve").Range.Font.Hidden = False
    End If
    

    如果标题为“checkbox1”并且选中为 True,则您将“批准”设置为隐藏,但 Else 将在只有一个时运行(或都不运行)其中是真的。因此,您的 Else 子句始终在未连接到单击控件的其他两个块中运行。

    这样会更好:

    If ContentControl.Title = "checkbox1" Then
        If ContentControl.Checked = True Then
            ActiveDocument.Bookmarks("Approve").Range.Font.Hidden = True
        Else
            ActiveDocument.Bookmarks("Approve").Range.Font.Hidden = False
        End If
    End If
    

    或(更短):

    If ContentControl.Title = "checkbox1" Then
    
        ActiveDocument.Bookmarks("Approve").Range.Font.Hidden = _
                             (ContentControl.Checked = True)
    
    End If
    

    整件事:

    Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
    
        Dim bChecked As Boolean
        bChecked = (ContentControl.Checked = True)
    
        If ContentControl.Title = "checkbox1" Then
            ActiveDocument.Bookmarks("Approve").Range.Font.Hidden = bChecked
        End If
    
        If ContentControl.Title = "checkbox2" Then
            ActiveDocument.Bookmarks("Denied 1").Range.Font.Hidden = bChecked
            ActiveDocument.Bookmarks("Denied 2").Range.Font.Hidden = bChecked
        End If
    
        If ContentControl.Title = "checkbox3" Then
            ActiveDocument.Bookmarks("pending").Range.Font.Hidden = bChecked
        End If
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 2020-04-27
      • 1970-01-01
      相关资源
      最近更新 更多