2016-04-14 43 views
0

我試圖創建一個表單,用戶可以勾選一個框和文本的段落顯示的Word 2013 VBA IF-THEN-ELSE ...如果沒有聲明工作

我用下面的代碼然而,當我點擊了設計模式的文本消失(如預期),但是當我點擊複選框不會再出現

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 
+0

你可以嘗試使用Selection.Find並找到.Font.Hidden = true然後在查找,Replacement.Font.Hidden = false。您必須確保Selection.Find中的.Format屬性爲true,並且您的Selection.Find.Text =「」 – GibralterTop

+0

因此,此複選框是文檔表面上的ActiveX控件?如果您在代碼中放置了MsgBox,或者在單擊該框時執行了Debug.Print?難道你不想根據複選框的設置來隱藏/統一文本,而不是隻是切換? –

回答

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 
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 

如果這是一個專業的應用程序,你要存儲的個人「秀」的設置,並重新應用它們時,本文檔不再是活動文檔。但是,這是非常高級的編程...

+0

謝謝!它的工作原理是:-) –

+0

不客氣:-)由於您是StackOverflow的新手:在網站上顯示感謝以及幫助網站管理員和其他人提供相同問題的可接受方式是單擊對勾你認爲這個貢獻的左邊是你的問題的答案。 –

+0

@PipCameron忘記了我最後的回覆 –