vba - 在 ms-word 中选择另一个复选框时如何隐藏复选框选项
问题描述
我正在尝试在 ms-word 中组合一个表单,其中希望如果用户选中 3 个复选框选项中的 1 个,则其他两个及其相邻文本将被隐藏。
我知道如何隐藏内容,但我对 VBA/编程作为一个整体完全不熟悉,所以我不太清楚我的 If/Else 循环中有什么问题,但它绝对没有t 显示/隐藏所有内容。
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”且Checked 为 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
推荐阅读
- javascript - 从VueJS中的api获取数据时如何添加加载器?
- reactjs - React Native FilatList 和 ScrollView 详细信息屏幕
- android - DrawerLayout 内的 RecyclerView
- javascript - 日期到 UTC 字符串在一天内返回日期,但比较返回 false
- python - 在 Python 中运行函数时未定义参数
- python-3.x - 现在有在 Windows 10 上安装 CuPy 的首选方法吗?
- python-3.x - 使用 discord.py 检查频道中用户的最简单方法
- javascript - React - 如何将一个简单的函数转换为一个类?
- mule - Dataweave 2.0 的输出不正确
- bash - 在编写 BASH 脚本时使用 scp:“没有这样的文件或目录”