我正在尝试以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个部分时,它都无法工作。
任何指导都非常感激!
答案 0 :(得分: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” 并且 Checked为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