Чаще всего в процедурах обработки событий приходится заниматься проверкой данных, введенных пользователем с помощью элементов управления, Обычно программа предполагает ввод данных определенного вида. Однако пользователь может ввести любой текст в текстовое поле или поле со списком и выбрать почти любое число с помощью кнопок прокрутки.
В таком случае в процедуру соответствующего элемента управления крайне желательно добавить программный код, проверяющий правильность ввода. Этот программный код должен введенные пользователем данные оценить с точки зрения удовлетворения заданным критериям. Если критерии удовлетворены, программный код сохраняет введенные значения или передает их другой части программы. В противном случае можно отобразить сообщение или как-то по-другому информировать пользователя о том, что возникла проблема (рис. 10.27).
Можно также с помощью этого программного кода конвертировать введенные данные в данные подходящего вида, например сделать все буквы прописными.
Рис. 10.27. Для проверки введенных данных в текстовом поле и отображения этого сообщения об ошибке использовалась процедура обработки события Change
Проверка значений элементов управления требует использования операторов
If. . .Then и Select Case. В следующем простом примере проверяется на допустимость значение элемента управления кнопками прокрутки:
Private Sub spnVolumeControl_Change()
If spnVolumeControl.Value = 13 Then
MsgBox "13 не является допустимым значением."
End If
End Sub
Проверка правильности вводимых данных имеет смысл в любой момент взаимодействия пользователя с формой. В зависимости от выбранного момента проверка осуществляется в различных процедурах обработки различных событий, относящихся к элементу управления или к форме в целом, как показано в следующей таблице.
Момент проверки данных | Используемая процедура |
При нажатии любой клавиши | Процедура об работки события Key Press для элемента управления (для выяснения информации о нажатии отдельной клавиши) |
При любом изменении значения элемента управления | Процедура обработки события Change (для оценки значения) |
По окончании работы пользователя с элементом управления, непосредственно перед переходом к другому | Процедура обработки события Be Fore Update (позволяет отменить обновление данных и вернуть пользователя к текущему элементу управления) |
При закрытии формы пользователем | Процедура обработки события click для кнопок ОК или Закрыть в форме |
Вы сами должны выбрать подходящую для проверки процедуру, ответив на следующие вопросы.
* Насколько быстро должен выполняться программный код проверки?
* В какой момент нужно информировать об ошибке пользователя- в момент появления неправильного значения или уже после того, как пользователь закончит формирование вводимых данных?
* Основывается ли проверка на значениях, полученных от нескольких элементов управления?
Часть III Практикуемся в программировании на VBA
В этой части...
После того как вы познакомились с основами программирования на VBA и решили попробовать свои силы, вам пора изучить материал части III В главе 11 рассматриваются встроенные функции и операторы VBA; я не рекомендую вам создавать собственную процедуру, если встроенная функция сможет выполнить те же действия всего в одну строку. В главе 12 мы поговорим об использовании объектов. В главе 13 мы еще раз затронем тему управления данными, однако на этот раз речь будет идти о таких сложных вопросах, как использование массивов и коллекций.
Глава 11. Инструменты встроенного оркестра VBA.
В этой главе ...
~ Использование встроенных команд вместо нового изобретения программирования
~ Безопасное форматирование данных с помощью функции Format
~ Преобразование данных одних типов в другие
~ Работа с текстовыми строками
~ Забавы с датами и временем
~ Использование математических и финансовых функций