Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с книгами и листами.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
117.25 Кб
Скачать

14.14. События объекта Worksheet

14-09-Excel Worksheet Change.xlsm - пример к п. 14.14.

Работа с событиями листов очень похожа на работу с событиями книг. Вы могли заметить, что в VBA-проекте, присоединенном ккниге, есть объекты каждого из добавленных в книгу листов. Для создания обработчика события листа достаточно сделать двойной щелчок по его объекту и в появившемся окне редактора выбрать объект (для каждого листа это будет Worksheet ), и, как обычно, выбрать событие. Лист может воспринимать следующие события: Activate, BeforeDoubleClick, BeforeRightClick, Calculate,Change, Deactivate, FollowHyperlink, PivotTableUpdate, SelectionChange. Эти события практически полностью идентичны аналогичным событиям для объекта Workbook. Главное отличие заключается в том, что они имеют смысл для каждого конкретноголиста, а не для всех листов, как в случае с книгой.

Используем событие Change для проверки данных, вводимых пользователем в различные ячейки рабочего листа. Например, давайте напишем программу, которая предлагает пользователю создать пароль и тут же сообщает о том, насколько его пароль надежен. В качестве критерия надежности будем использовать длину пароля:

  • Пароль высокой надежности: длина не менее 8 символов

  • Пароль средней надежности: длина 5-7 символов

  • Пароль низкой надежности: до 5 символов.

Когда пользователь ввел пароль в ячейку, в соседней ячейке должен появляться прогноз надежности пароля. Пусть пользователь будет вводить пароль в ячейку A2, в ячейке B2 будет отображаться прогноз.

Для решения этой задачи создадим обработчик события Change для листа, на котором будут расположены вышеуказанные поля. Добавим в обработчик такой код (листинг 14.15.)

'Для хранения пароля

Dim str_Pass As String

str_Pass = ActiveSheet.Range("A2")

If Len(str_Pass) >= 8 Then _

ActiveSheet.Range("B2") = "Надежный пароль"

If Len(str_Pass) < 8 And Len(str_Pass) >= 5 Then _

ActiveSheet.Range("B2") = _

"Пароль средней надежности"

If Len(str_Pass) < 5 Then _

ActiveSheet.Range("B2") = _

"Ненадежный пароль"