
- •14.1. Коллекция Workbooks - работа с книгами
- •14.2. Методы Коллекции Workbooks
- •14.2.1. Add, Close, Open - стандартная работа с книгами
- •14.6.2. Свойства CodeName, FullName, Name
- •14.7. События объекта Workbook
- •14.8. Коллекция Worksheets
- •14.9. Методы коллекции Worksheets
- •14.9.2. Copy - копируем листы
- •14.9.3. Delete, Move - удаляем и перемещаем листы
- •14.12.2. Paste, PasteSpecial, о работе с Selection
- •14.12.3. Protect и Unprotect - защита и снятие защиты
- •14.13. Свойства объекта Worksheet
- •14.13.1. Cells - ячейки листа
- •14.13.6. UsedRange - заполненные ячейки
- •14.13.7. Visible - скрытие и отображение листов
- •14.14. События объекта Worksheet
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") = _
"Ненадежный пароль"