【问题标题】:Word 2013 VBA IF-THEN-ELSE ... If statement not workingWord 2013 VBA IF-THEN-ELSE ...如果语句不起作用
【发布时间】:2016-08-05 16:19:44
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以尝试使用 Selection.Find 并找到 .Font.Hidden = true 然后查找,Replacement.Font.Hidden = false。您必须确保 Selection.Find 中的 .Format 为真并且您的 Selection.Find.Text = ""
  • 那么,这个复选框是文档表面的一个ActiveX控件吗?如果您在代码中放置一个 MsgBox 或一个 Debug.Print 在单击该框时会执行吗?您不想根据复选框的设置隐藏/取消文本,而不仅仅是切换吗?

标签: vba if-statement ms-word bookmarks


【解决方案1】:

当您使用 Hidden 属性隐藏/显示文本时,请确保在 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

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

【讨论】:

  • 不客气 :-) 由于您是 StackOverflow 的新手:在网站上表示感谢以及帮助网站管理和其他有相同问题的人的公认方式是单击您认为是您问题的“答案”的贡献左侧的复选标记。
【解决方案2】:

下面的代码可以为我工作。

所以你基本上可以:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2015-05-05
    相关资源
    最近更新 更多