У меня есть пользовательская форма с кнопкой Далее. В подпункте Next_Click у меня есть длинная инструкция if, которая проверяет каждое поле на полноту и достоверность данных.
Есть два поля даты, в которых по умолчанию указана сегодняшняя дата, чтобы показать пользователю необходимый формат даты. Но так как он предварительно заполнен, я подумал, что люди могут забыть ввести правильную дату, поэтому, если дата все еще является сегодняшней датой, когда нажимается кнопка «Далее», появляется всплывающее окно с вопросом, означает ли пользователь, чтобы дата была сегодняшней датой,
Идея в том, что если пользователь скажет «нет», он получит возможность вернуться и изменить дату, а затем, когда снова нажмет «Далее», будет выполнена та же проверка проверки, если-оператор, и затем он сможет перейти кследующая страницаЕсли они говорят «да», то следует просто продолжить проверку проверки и перейти к следующей странице.
НО это похоже на всплывающее окно msgbox, не позволяющее пользовательской форме переключаться на следующую страницу (на самом деле это отдельная пользовательская форма, потому что я не знал о многостраничной вещи, когда делал это). Я попытался поместить недопустимые данные в другое текстовое поле, и, когда мой msgbox всплыл и велел мне повторно ввести данные, я смог ввести данные и перейти на следующую страницу. Наверное, что-то не так с моими текстовыми полями для дат. Я вставил ниже все, что относится к текстовому полю даты в подпункте Next_Click.
Редактировать: я должен также упомянуть, что, если я введу дату, отличную от сегодняшней, кнопка Далее будет работать нормально.
1 Private Sub IB_Next_Click()
2 'Data validation
3
4 ElseIf Me.IB_LoanDate.Value = "" Then
5 blahAnswer = MsgBox("Please enter a loan date.")
6 Me.IB_LoanDate.SetFocus
7 Exit Sub
8 ElseIf IsDate(Me.IB_LoanDate.Value) = False Then
9 blahAnswer = MsgBox("Please enter a valid date.", , "Invalid Entry")
10 Me.IB_LoanDate.SetFocus
11 Exit Sub
12 ElseIf CDate(Me.IB_LoanDate.Value) = VBA.Date Then
13 loanDateAnswer = MsgBox("The loan date is still set to the default of today's date. Was that intentional?", vbYesNo, "Validation Check")
14 If loanDateAnswer = vbNo Then
15 Me.IB_LoanDate.SetFocus
16 Exit Sub
17 End If
18 ...
19 Else
20 ...
21 LoanWiz_IB.Hide
22 LoanWiz_IntTerms.Show
23 End If
24 End Sub
Если я нажимаю «Нет», он выполняет «Выход из суб», как и положено, но затем кнопка «Далее» не работает после того, как я фиксирую дату. Если я нажимаю «Да», это похоже на то, что он перестает читать код после того, как он читает строку 17. Какие-либо предложения о том, чтобы заставить его читать остальную часть кода?