После того как пользователь ввел всю нужную информацию в форму, он щелкает на кнопке Сохранить. Что должно произойти после этого? Процедура, которая запускается на исполнение после щелчка на кнопке Сохранить, должна проверить правильность введенных данных и в случае их корректности записать данные в рабочий лист.
Начнем с проверки правильности данных. Понятие правильности (корректности) данных зависит от выполняемого приложения. Поле ввода может принять все, что вы способны ввести с клавиатуры. И если вы ввели какую-нибудь абракадабру, то это не значит, что введенное значение некорректно. Все зависит от тех ограничений, которые накладывает приложение на вводимые данные. Например, на разрабатываемой нами экранной форме есть поле ввода Номер комнаты. Очевидно, что корректными значениями для этого поля будут целые положительные числа. Далее предположим, что в нашем отеле сдаются только комнаты с номерами от 101 до 730. В этом случае корректными данными для поля будут лишь целые числа из указанного интервала. Аналогичные ограничения должны накладываться на значения полей Тип расходов, Сумма, Дата, а также на значения полей группы Способ оплаты. (Обратите внимание на маленькую, но существенную деталь: проверку поля сумму и полей с данными о кредитной карте надо выполнять только тогда, когда эти поля разблокированы.)
Надеюсь, вы поняли, от чего зависит правильность данных, и сейчас мы приступим к созданию процедуры, которая будет выполняться после щелчка на кнопке Сохранить и проверять корректность введенных данных. Выполните следующие действия.
В редакторе Visual Basic отобразите разрабатываемую форму.
Дважды щелкните на кнопке Сохранить. В окне кода появится заголовок процедуры cmdSave_Click.
Введите следующий код этой процедуры:
If Val(txtRoomNumber.Text) < 101 Or _
Val(txtRoomNumber.Text) > 730 Then
MsgBox "Неправильный номер комнаты"
txtRoomNumber.SetFocus
Exit Sub
End If
If txtGuestName.Text = "" Then
MsgBox "Пожалуйста, введите имя гостя"
txtGuestName.SetFocus
Exit Sub
End If
If chkTipIncluded.Value = True Then
If txtTipAmount = " " Then
MsgBox "Если установлен флажок "Включить", _
то надо ввести число в поле "сумму" "
txtTipAmount.SetFocus
Exit Sub
End If
End If
If txtAmount.Text = "" Then
MsgBox "Пожалуйста, введите сумму расходов"
txtAmount.SetFocus
Exit Sub
End If
If IsNumeric(txtAmount.Text) = False Then
MsgBox "Сумма должна быть числом"
txtAmount.SetFocus
Exit Sub
End If
If txtDate.Text = "" Then
MsgBox "Необходимо ввести дату"
txtDate.SetFocus
Exit Sub
End If
If optCreditCard.Value = True Then
If txtCardNumber = "" Then
MsgBox "Пожалуйста, введите номер кредитной карты"
txtCardNumber.SetFocus
Exit Sub
End If
If txtExpires.Text = "" Then
MsgBox "Введите дату окончания карты"
txtExpires.SetFocus
Exit Sub
End If
End If
Unload Me
Перейдите в рабочую книгу и щелкните на командной кнопке, отрывающей форму.
Щелкните на кнопке Сохранить. Появится окно с сообщением: "Неправильный номер комнаты" (рис. 15.5).
Щелкните на кнопке ОК, чтобы закрыть окно сообщения. Введите 121 в поле Номер комнаты и щелкните на кнопке Сохранить. В другом появившемся окне сообщения щелкните на кнопке ОК.
Введите свое имя как имя гостя. Введите 20 в поле Сумма.
Щелкните на флажке Включить, а затем на кнопке Сохранить. Появится очередное окно сообщения с предложением ввести данные в поле сумму. Щелкните на кнопке ОК, чтобы закрыть это окно.
Введите число 2 в поле сумму и щелкните на кнопке Сохранить. Форма исчезнет с экрана.
Вы, конечно, заметили, что в этой процедуре проверялись свойства Text и Value элементов управления. Рассмотрим подробнее код одной такой проверки, показанный в листинге 15.2.