繁体   English   中英

Word 中的 VBA:如果然后切换隐藏/未隐藏的书签

[英]VBA in Word: If then to toggle bookmarks hidden/unhidden

这段 VBA 代码似乎应该可以在 Word 中的书签上切换 hidden = True/False,但事实并非如此。

Private Sub Instructions_Click()

If ActiveDocument.Bookmarks("InstText").Range.Font.Hidden = True Then

Bookmarks("InstText").Range.Font.Hidden = False

Else

Bookmarks("InstText").Range.Font.Hidden = True

End If

End Sub

下一个有效(如果您单击“ Instructions ”按钮,相应的书签文本将不隐藏)

Private Sub Instructions_Click()

ActiveDocument.Bookmarks("InstText").Range.Font.Hidden = False

End Sub

我看到的另一个想法是:

Private Sub Instructions_Click()

ActiveDocument.Bookmarks("InstText").Range.Font.Hidden = Not  ActiveDocument.Bookmarks("InstText").Range.Font.Hidden

基本上应该将其翻转为不是的任何东西。 但这对我不起作用。

谁能告诉我第一个有什么问题? 我猜隐藏属性出于某种原因不能用作条件,但是——为什么不呢? 或者是别的什么? 最好的方法是什么?

将此代码添加到 Normal > NewMacros:

Sub Toggle_Bookmarks()
    ActiveWindow.View.ShowBookmarks = Not ActiveWindow.View.ShowBookmarks
End Sub
  1. 右键单击 Microsoft Word 功能区
  2. 自定义快速访问工具栏
  3. 左上方列表,从宏中选择命令
  4. 选择 Normal.Newmacros.Toggle_Bookmarks
  5. 点击添加
  6. 单击确定

现在您在快速访问工具栏中有一个切换按钮,可以单击以切换书签。

这并没有回答问题,但对于将他的问题用于他们自己的问题的人来说,这是一些见解。

出于某种原因,if 语句不计算 Range.Font.Hidden = False。 但是,如果您使用 .Range.Font.Hidden = True,它会进行计算。

所以你必须使用 Else: 来解决它。 有点双重消极的情况。

'SF1

如果 ActiveDocument.Bookmarks("SF1").Range.Font.Hidden = True 那么

否则:ActiveDocument.Bookmarks("SF1X").Range.Font.Hidden = False

结束如果``

在我自己的 Word 加载项中,我显示了找到的所有书签的列表。 用户单击书签(或多个书签)并单击切换按钮以切换可见性。

我的例程遍历所有选定的书签并使用这两行代码:

.Bookmarks(intHideShowBookmark).Select
.Bookmarks(intHideShowBookmark).Range.Font.Hidden = Not _ .Bookmarks(intHideShowBookmark).Range.Font.Hidden

这是使用您提到的第三个选项。 希望有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM