скрытие / отображение разделов для форм в зависимости от даты - PullRequest
0 голосов
/ 23 июня 2011

просто запрос больше всего на свете. Не уверен, разрешено ли мне просто задать вопрос здесь без отправки кода? но все равно здесь идет.

Интересно, возможно ли в Excel использовать vba, чтобы показать / скрыть разделы формы в зависимости от того, какая это дата. Форма, которую я создаю, будет использоваться для аудитов, и каждый месяц будет проходить новый аудит. Форма будет использоваться, как описано ниже.

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

да - показывает соответствующую форму в зависимости от даты нет - листья формируются как есть.

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

1 Ответ

1 голос
/ 23 июня 2011

Ваш вопрос немного открытый и явно нет однозначного ответа. Вот некоторые из моих первоначальных мыслей:

Если ваши формы отличаются незначительно (т. Е. 90% одинаковы и только 10% являются переменными), и изменяется только определенный раздел (ы) формы, то, возможно, создайте каждый раздел и затем выборочно скрыть.

Например, предположим, у меня есть раздел, который отличается в зависимости от того, является ли пользователь мужчиной или женщиной. Я мог бы построить оба раздела и затем показать / скрыть следующим образом:

If gender = "Male" Then
    Rows("10:20").EntireRow.Hidden = True //Assume you built male section in rows 10 to 20
    Range("20:30").EntireRow.Hidden = false //Assume you built female section in 20 to 30
Else // replicate code for female scenario
    Rows("10:20").EntireRow.Hidden = False
    Rows("20:30").EntireRow.Hidden = True
End if

Если ваши формы сильно различаются (т. Е. Только 10% статическая и 90% переменная) мой опыт заключается в том, что вам лучше создавать каждую форму отдельно в отдельном рабочем листе, а затем отображать соответственно:

If gender = "Male" Then
     Worksheets("maleForm").Visible = True
Else
     Worksheets("femaleForm").Visible = True
End if

Если ваши поля ввода отличаются , то вы можете рассмотреть выборочное отключение некоторых полей:

 If gender = "Male" Then
      Worksheets("myForm").OLEObjects("lipstickDropDown").Enabled = False //Using Control Toolbox items e.g. textbox, combobox etc...
      Worksheets("myForm").OLEObjects("beerDropDown").Enabled = True
 Else
      Worksheets("myForm").OLEObjects("lipstickDropDown").Enabled = True 
      Worksheets("myForm").OLEObjects("beerDropDown").Enabled = False
 End if

Если я смогу добавить к этому позже, я сделаю. Вам это поможет?

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