在 ms-word 中选中另一个复选框时如何隐藏复选框选项
How to hide checkbox options when another checkbox is selected in ms-word
我正在尝试在 ms-word 中组合一个表单,其中希望如果用户选中 3 个复选框选项中的 1 个,则其他两个及其相邻文本将是隐。
我知道如何在某种程度上隐藏内容,但我对 VBA/programming 整体完全不熟悉,所以我不太清楚我的 If/Else 循环,但它绝对不是 show/hide 一切。
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 个部分时,它就不起作用了。
非常感谢任何指导!
这里:
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,您将 "approve" 设置为隐藏,但是 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
我正在尝试在 ms-word 中组合一个表单,其中希望如果用户选中 3 个复选框选项中的 1 个,则其他两个及其相邻文本将是隐。
我知道如何在某种程度上隐藏内容,但我对 VBA/programming 整体完全不熟悉,所以我不太清楚我的 If/Else 循环,但它绝对不是 show/hide 一切。
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 个部分时,它就不起作用了。
非常感谢任何指导!
这里:
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,您将 "approve" 设置为隐藏,但是 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