Проверка корректности данных - это только одна задача, которую решает процедура cmdSave_Click. Вторая задача, решаемая данной процедурой, заключается в записи данных, введенных в форму, в ячейки рабочего листа. Для этого применяются уже проверенные на корректность значения свойств Text и Value элементов управления. Используйте следующие инструкции для завершения написания процедуры cmdSave_Click.
Перейдите на рабочий лист Лист3 и переименуйте его на Расходы.
В первой строке листа создайте строку заголовков, повторяющую названия элементов управления формы. За образец возьмите рабочий лист, показанный на рис. 15.6.
Перейдите в редактор Visual Basic и отобразите экранную форму.
Чтобы открыть окно кода, дважды щелкните на кнопке Сохранить.
Введите в процедуру cmdSave_Click перед оператором Unload Me следующий код:
Сохраните рабочую книгу. (Вообще возьмите себе за правило сохранять рабочую книгу после создания каждой процедуры.)
Щелкните на кнопке, вызывающей экранную форму. Введите 430 в поле Номер комнаты и ваше имя в качестве имени гостя. Выберите в списке Тип расходов пункт Уроки гольфа. В поле сумма введите число 100. Установите флажок Включить и в поле сумму введите 10. Установите переключатель Кредитная карта и выберите тип карты Visa. Введите номер кредитной карты 112233, а срок окончания годности карты - 1.01.01. Щелкните на кнопке Сохранить.
Форма закроется, а введенные в нее данные будут записаны в ячейки рабочего листа Расходы (рис. 15.6).
Теперь изучим подробнее вторую часть кода процедуры. Рассмотрим начало записи данных в рабочий лист.
Рис. 15.6. Все введенные в форму данные скопированы в рабочий лист
Здесь сначала делается текущим рабочий лист Расходы, а затем - ячейка А2. Ввод данных начинается со второй строки рабочего листа, так как в первой размещены заголовки столбцов. Далее проверяется, занята ли ячейка А2. Если нет, то начинается запись данных. Если ячейка А2 занята, то находится последняя занятая ячейка. Здесь ведущую роль играет свойство CurrentRegion (Текущая область) объекта Range. После выделения текущей области можно определить ее размеры и, следовательно, найти первую свободную строку. Для этого используется свойство Offset (Смешение).
Далее в процедуре идет непосредственно запись введенных данных в рабочий лист. Затем проверяется, установлены ли флажок Включить и переключатель Кредитная карта, и если установлены, то также переписываются данные из соответствующих полей.
Для того чтобы наша форма стала функционально полностью завершенной, необходимо написать еще одну процедуру - для кнопки Отмена.
Перейдите в редактор Visual Basic и дважды щелкните на кнопке Отмена. Откроется окно кода с заголовком процедуры cmdCancel_Click.
В эту процедуру введите следующую строку кода:
Unload Me.
Сохраните рабочую книгу.
Теперь, если пользователь щелкнет на кнопке Отмена, то экранная форма удалится из памяти компьютера и с экрана. В реальных приложениях при щелчке на кнопке Отмена часто открывается окно сообщения, требующее подтверждение на закрытие формы. Надеюсь, для вас не составит большого труда добавить в процедуру cmdCancel_Click код, открывающий такое окно сообщения.
Резюме
Итак, создано полнофункциональное диалоговое окно, позволяющее вводить данные, проверять их и записывать в рабочий лист. Поздравляю! Вы делаете большие успехи в программировании!
Подведем промежуточные успехи. В последнем часе рассмотрена методика разработки структуры экранной формы. Этот час был посвящен автоматизации экранной формы, т.е. написанию процедур, управляющих поведением формы и ее элементов управления. Другими словами, вы прошли все этапы создания экранных форм от начала до конца. Вы знаете, как вывести форму на экран и инициализировать ее значения, как проверить корректность вводимых в форму данных и записать их в рабочий лист.