Word 2013 VBA IF-THEN-ELSE ...如果陈述不起作用

时间:2016-04-14 08:26:36

标签: if-statement word-vba bookmarks

我试图创建一个表单,用户可以在其中打勾并显示文本段落

我已经使用了下面的代码,但是当我点击设计模式时,文字会消失(正如预期的那样),但是当我点击复选框时它就不会重新出现

Private Sub CHECKbutane_Click()
If (Bookmarks("TEXT_Butane").Range.Font.Hidden = True) Then
Bookmarks("TEXT_Butane").Range.Font.Hidden = False

Else

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

End If
End Sub

2 个答案:

答案 0 :(得分:1)

当您使用隐藏属性隐藏/显示文本时,请确保在Word UI 中关闭隐藏文本的显示还必须关闭所有非打印选项。各个optinos在文件/选项/显示;可以使用“主页”选项卡中的“向后P”打开/关闭所有非打印字符。

当然,如果这是其他人使用的宏,则没有人希望不得不继续进入文件/选项/显示来更改这些设置。这是一个宏,可以打开除隐藏文本之外的所有内容的个别设置,如果正在显示非打印字符。

如果关闭后显示非打印字符,则根据复选框的状态打开/关闭隐藏文字的显示。

Private Sub CheckBox1_Click()
    Dim vw As Word.View
    Dim bChecked As Boolean
    Dim bkm As Word.Bookmark

    'If the user is currently viewing non-printing characters
    'make sure these are turned on individually so that
    'not displaying Hidden text does not affect these settings.
    Set vw = Application.ActiveWindow.View
    If vw.ShowAll = True Then
        vw.ShowParagraphs = True
        vw.ShowObjectAnchors = True
        vw.ShowTabs = True
        vw.ShowHyphens = True
        vw.ShowOptionalBreaks = True
        vw.ShowSpaces = True
    End If
    vw.ShowAll = False
    vw.ShowHiddenText = False

    bChecked = Me.CheckBox1.Value
    Set bkm = ActiveDocument.Bookmarks("TEXT_Butane")
    If bChecked Then
        bkm.Range.Font.Hidden = False
    Else
        bkm.Range.Font.Hidden = True
    End If
End Sub

如果这是一个专业应用程序,您需要存储单独的“显示”设置,并在此文档不再是活动文档时重新应用它们。但那是非常先进的编程......

答案 1 :(得分:0)

我有以下代码可供我使用。

所以你基本上可以:

Public Hide As Boolean

Sub CHECKbutane_Click()

    Bookmarks("TEXT_Butane").Range.Select

    If Hide Then

        Hide = False
        Call Hide

    Else

        Hide = True
        Call Unhide

    End If
End Sub

Sub Unhide()

    With Selection.find

        .text = ""
        .Format = True
        .Font.Hidden = True
        .Replacement.Font.Hidden = False
        .MatchWildcards = False

    End With

    Do While Selection.find.Execute

        Selection.Font.Hidden = False
        Selection.MoveRight 1

    Loop

End Sub

Sub Hide()

    With Selection.find

        .text = ""
        .Format = True
        .Font.Hidden = False
        .Replacement.Font.Hidden = True
        .MatchWildcards = False

    End With

    Do While Selection.find.Execute

        Selection.Font.Hidden = True
        Selection.MoveRight 1

    Loop

End Sub