Я начал применять эти приемы и только сейчас начинаю ценить этот ответ настолько, насколько он этого заслуживает. Спасибо большое!
ли недостатки при помещении кода в пользовательскую форму VBA вместо «нормального» модуля?
Это может быть простой вопрос, но я не нашел окончательного ответа на него при поиске в Интернете и в стеке.
Фон: Я разрабатываю Front-End приложение базы данных в Excel-VBA. Для выбора разных фильтров у меня разные пользовательские формы. Я спрашиваю, какой общий дизайн программы лучше:(1) помещение структуры управления в отдельный модуль ИЛИ ЖЕ(2) размещение кода для следующей пользовательской формы или действия в пользовательской форме.
Давайте сделаем пример. У меня есть кнопка Active-X, которая запускает мои фильтры и мои формы.
Вариант1: Модули
В CommandButton:
Private Sub CommandButton1_Click()
call UserInterfaceControlModule
End Sub
В модуле:
Sub UserInterfaceControllModule()
Dim decisionInput1 As Boolean
Dim decisionInput2 As Boolean
UserForm1.Show
decisionInput1 = UserForm1.decision
If decisionInput1 Then
UserForm2.Show
Else
UserForm3.Show
End If
End Sub
В варианте 1 управляющая структура находится в обычном модуле. И решения о том, какую пользовательскую форму показывать следующим, отделены от пользовательской формы. Любая информация, необходимая для принятия решения о том, какую пользовательскую форму показывать следующим, должна быть извлечена из пользовательской формы.
Вариант2: пользовательская форма
В CommadButton:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
В пользовательской форме1:
Private Sub ToUserform2_Click()
UserForm2.Show
UserForm1.Hide
End Sub
Private Sub UserForm_Click()
UserForm2.Show
UserForm1.Hide
End Sub
Во втором варианте структура управления находится непосредственно в пользовательских формах, и каждая пользовательская форма имеет инструкции о том, что следует за ней.
Я начал разработку с использованием метода 2. Если это было ошибкой и у этого метода есть серьезные недостатки, я хочу узнать его скорее раньше, чем позже.