如何在打印时隐藏未选中的复选框

问题描述 投票:0回答:3

我正在 Word 2013 中创建带有复选框的合同规范页面,以便我的老板可以单击他想要包含在最终打印合同中的每个框,并隐藏他不需要的框。我对 VBA 完全陌生,但我知道我需要使用它来实现这一目标。通过在互联网上搜索,我使用了书签和下面的代码:

Private Sub CheckBox1_Click()
 If CheckBox1.Value = False Then
 ActiveDocument.Bookmarks("Work1").Range.Font.Hidden = True
 Else
 ActiveDocument.Bookmarks("Work1").Range.Font.Hidden = False
 End If
 End Sub

但是这段代码似乎在我单击复选框之前隐藏了它们。我希望复选框在打印之前保持可见,以防我的老板需要进行更改。我还尝试使用其他代码,但它也没有按照我想要的方式工作:

Private Sub CheckBox1_Click()
  If CheckBox1.Value = False Then
    ActiveDocument.Bookmarks("Work1").Application.Options.PrintHiddenText = False
Else
    ActiveDocument.Bookmarks("Work1").Application.Options.PrintHiddenText = True
End If
End Sub

我也想做到这一点,这样未使用的复选框就不会出现间隙。任何帮助将不胜感激!

vba ms-word
3个回答
0
投票

我昨天似乎把问题复杂化了。您唯一的问题是您的复选框与文本一起变得不可见。您只需准确地为要隐藏/显示的文本添加书签,将复选框(Word 将其视为文本的一部分)保留在书签之外。

您的代码可以很好地完成此操作,或者您可以将其替换为:

Private Sub CheckBox1_Click()
Bookmarks("Work1").Range.Font.Hidden = Not CheckBox1
End Sub

顺便说一句,如果你让Word显示段落标记(Ctrl + *),你将能够看到隐藏的文本。


0
投票

我建议你的宏:

a) 保存当前文档(如果需要,可以保存在临时文件夹中)

b) 删除所有未选中的框

c) 打印文档

d) 关闭文档

e) 打开a)点保存的文件。

应该需要十几行代码左右。


0
投票

我意识到这是几年前的帖子,但这是我发现的最接近我当前困境的帖子。

我正在创建一个类似于第一篇文章中所述的文档。相同的目标和相同的格式,但不幸的是我对隐藏文本有问题。

我明白问题所在。我的复选框位于每个小标题的标题旁边。复选框已隐藏在书签之外,但是每次选中它们(标记为隐藏)时,复选框都会与文本的其余部分合并(单独的书签)。

有没有办法让它们保持分离?或者是将其完全放在另一行而不是放在副标题旁边的唯一解决方案。

提前谢谢您。

© www.soinside.com 2019 - 2024. All rights reserved.