2016-04-14 2 views
0

Я пытаюсь создать форму, где пользователь может тикать коробок и абзацы текста отображаютсяСлово 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 и find .Font.Hidden = true, а затем find, Replacement.Font.Hidden = false. Вам нужно убедиться, что ваш .Format в Selection.Find истинен, и ваш 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

При работе с использованием скрытого свойства, чтобы скрыть/показать текст, убедитесь, что дисплей скрытого текст выключен в слове UI и необходимо также отключить отображение всех параметров без печати. Отдельные оптики находятся в файле/Опции/Дисплей; все непечатаемые символы можно переключать вкл/выкл, используя «назад 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 Забыл рассказать вам о моем последнем ответе ... –

Смежные вопросы