Ваш вопрос немного открытый и явно нет однозначного ответа. Вот некоторые из моих первоначальных мыслей:
Если ваши формы отличаются незначительно (т. Е. 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
Если я смогу добавить к этому позже, я сделаю. Вам это поможет?