Как использовать VBA, чтобы показать / скрыть несколько комбинаций таблиц в MS Word?- объяснил в дальнейшем - PullRequest
1 голос
/ 23 мая 2019

У меня есть документ Word 2010 с некоторым базовым кодом VBA, прикрепленным к флажкам номера, которые показывают / скрывают разделы по всему документу. В документе есть несколько таких документов, но все они используют один и тот же базовый код, который, кажется, работает достаточно хорошо (пример ниже)

Private Sub PlanningBox_Click()
If PlanningBox.Value = False Then
    ActiveDocument.Bookmarks("Planning").Range.Font.Hidden = True
Else
    ActiveDocument.Bookmarks("Planning").Range.Font.Hidden = False
End If
End Sub

Проблема, с которой я столкнулся, заключается в том, что некоторые из этих разделов имеют внутри себя флажки, которые показывают / скрывают следующий раздел, что хорошо, однако, если пользователь снимает флажок с первого начального флажка (скрывая все разделы), то повторно проверяет его, он снова откроет начальный раздел, но не отмеченные галочкой подсекции - для этого им придется снова снять / проверить подсекцию. Я знаю, что это кажется незначительным, но мне нужно убедиться, что форма максимально гибкая и доступная пользователю.

Например, допустим, есть таблица из одной строки с текстом «Вы говорили с кем-нибудь для обратной связи?» (флажок1) - пользователь отметит флажок, который будет показывать раздел текста ниже, в котором даются указания, задаются некоторые вопросы, общие сообщения и т. д. В нижней части этого вопроса есть еще один вопрос «С кем вы разговаривали?», а затем несколько флажки «мама», «папа», «ребенок» (флажки A, B, C и т. д.). Если установить флажок в любом из этих полей, откроется таблица с дополнительными вопросами для каждого выбранного, пользователь может проверить любое число / комбинацию флажки.

Теперь, если пользователь снимает начальный флажок 1. Все разделы будут скрыты без проблем, но затем, если они затем проверят его, чтобы снова открыть раздел, флажки «Мать», «Отец» и т. Д. Остаются отмеченными, но не будут отображать разделы без необходимости быть снова отмеченным / помеченным. Есть ли способ сделать так, чтобы отметка начального поля также снова открывала ранее скрытые разделы?

Мои знания по VBA очень ограничены, я подумал об использовании операторов If + ElseIF, но я понимаю, что мне понадобится ElseIf для каждой потенциальной комбинации. Есть ли более изощренный способ обойти это вообще?

Надеюсь, я сформулировал это достаточно хорошо, но рад предоставить дополнительную информацию. Спасибо за любую помощь, оказанную

1 Ответ

0 голосов
/ 23 мая 2019

Вы можете создать общую процедуру, которая оценивает каждый флажок и соответственно устанавливает соответствующий раздел.Вызывайте эту одну подпрограмму всякий раз, когда установлен флажок.

Private Sub PlanningBox_Click()
    SetRangeVisibility
End Sub

Private Sub SomeOtherBox_Click()
    SetRangeVisibility
End Sub

Public Sub SetRangeVisibility()
    If PlanningBox.Value = False Then
        ActiveDocument.Bookmarks("Planning").Range.Font.Hidden = True
    Else
        ActiveDocument.Bookmarks("Planning").Range.Font.Hidden = False
    End If

    If SomeOtherBox.Value = False Then
        ActiveDocument.Bookmarks("SomeOtherRange").Range.Font.Hidden = True
    Else
        ActiveDocument.Bookmarks("SomeOtherRange").Range.Font.Hidden = False
    End If

    ' Etc...

End Sub

Далее, если вы используете массив флажков, вам нужно будет написать только одну процедуру SomeBox_Click.Вот некоторая информация о массивах управления в VBA .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...