- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
VBA для чайников - Стив Каммингс
Шрифт:
Интервал:
Закладка:
Activate
Формы
Каждый раз, когда форма активизируется (получает фокус ввода)
AddControl
Формы, фреймы и формы с множеством страниц
При добавлении в объект элемента управления во время выполнения формы
AfterUpdate
Все "действующие" элементы управления, кроме кнопок
После установки нового значения для элемента управления, в момент перехода от данного элемента управления к другому
Change
Все "действующие" элементы управления, кроме кнопок
При изменении значения свойства Value элемента управления
Click
Формы и все типы элементов управления
После щелчка кнопкой мыши на объекте
DblClick
Формы и все типы элементов управления
После двойного щелчка кнопкой мыши на объекте
DropButtonClick
Текстовые поля и поля со списком
При появлении раскрывающегося списка (после щелчка на кнопке раскрытия или нажатия клавиши <F4>)
Enter
Все типы элементов управления
Непосредственно перед тем, как элемент управления получит фокус ввода от другого элемента управления в той же форме
Error
Формы и все типы элементов управления
Когда возникает ошибка, но информация о ней не может возвратиться программе
Exit
Все типы элементов управления
Непосредственно перед тем, как фокус ввода перейдет от данного элемента управления к другому в той же форме
KeyUp, KeyDown, Keypress
Формы и все типы элементов управления
При нажатии или отпускании кнопки
Layout
Формы, фреймы и формы с множеством страниц
При изменении размеров объекта
RemoveControl
Формы, фреймы и формы с множеством страниц
При удалении элемента управления из объекта во время выполнения формы
Scroll
Формы, фреймы и формы с множеством страниц, а также текстовые поля, списки и поля со СПИСКОМ
При изменении положения бегунка полосы прокрутки
Zoom
Формы, фреймы и формы с множеством страниц
При изменении масштаба объекта (значения свойства Zoom)
Программирование обработки событий
Как видно из табл. 10.1, формы и элементы управления могут отвечать на многие события. Но когда форма действительно отвечает на какое-нибудь конкретное событие? Только тогда, когда она имеет соответствующую процедуру для этого события. Процедуры обработки событий должны быть кем-то созданы - в данном случае вами.
Создание процедуры обработки события не отличается от создания любой другой процедуры в VBA. Нужно только знать, куда поместить соответствующие операторы. Программный код для процедуры обработки события, как и весь остальной связанный с формой программный кол, в редакторе Visual Basic размешается в окне программного кода этой формы.
Следовательно, процедуры обработки событий для всех элементов управления в форме, как и для самой формы, создаются в окне программного кода формы. Поэтому, перед тем как программировать соответствующие событиям процедуры, выполните следующие шаги.
1. Откройте окно программного кода формы.
Двойной щелчок на форме или любом ее элементе управления - самый короткий путь для этого. Иначе можно выделить форму и выбрать View=Code из контекстного (вызываемого щелчком правой кнопки мыши) меню для формы или элемента управления, с которыми вы собираетесь работать, или же нажать <F7>, когда форма выделена в ее окне UserForm.
2. В окне программного кода формы выберите объект, для которого вы хотите создать процедуру обработки события.
Объект выбирается из раскрывающегося списка объектов вверху слева в окне программного кода формы (рис. 10.25).
3. Выберите событие, для которого нужно создать программный код.
На этот раз используйте раскрывающийся список процедур, размещенный в окне программного кода вверху справа.
Рис. 10.25. Выбор элемента управления в окне программного кода формы перед началом создания процедуры обработки события
Как только из раскрывающегося списка процедур будет выбрано событие, VBA немедленно перенесет вас прямо к процедуре его обработки. Если для события еще не создано никакого программного кода, VBA создаст для вас заготовку процедуры, разместив курсор ввода в пустой строке между оператором объявления процедуры и ее завершающим оператором (см. рис. 10.25). Если процедура обработки события уже содержит программный код, VBA просто поместит курсор ввода в его первую строку.
Вам не стоит беспокоиться об объявлении процедур, так как VBA делает это автоматически, когда вы выбираете событие в окне программного кода
Рис. 10.26 Только что созданная заготовка процедуры обработки события в окне редактора Visual Basic
Как влдно из рис. 10.26, синтаксис процедур обработки событий не отличается от синтаксиса обычных процедур типа Sub. Единственное, что отличает процедуру обработки события, так это ее имя. Чтобы процедура обработки события вообще функционировала, ее имя должно состоять из имени объекта (формы или элемента управления), за которым следуют символ подчеркивания и официальное имя события VBA. Посмотрите на следующие примеры:
Private Sub cmdCalcuiateSquareRoot_Click()
End Sub
Private Sub UserForm_Activate()
End Sub
Private Sub sclVolumeControl_Change ()
End Sub
Единственный случай, когда возникают проблемы с именем процедуры обработки события, - когда имя объекта, которому соответствует процедура, изменяется после создания процедуры. VBA не меняет при этом имя процедуры автоматически, поэтому вы должны открыть окно программного кода и привести имя процедуры обработки события в соответствие с новым именем элемента управления.
Например, предположим, что вы создали процедуру обработки события Click (Щелчок) для кнопки, которой было автоматически присвоено имя CommandButtonl. Тогда именем процедуры будет CommandButtonl_Click. Спохватившись, вы изменили имя кнопки на более информативное, например cmdВернутьИзКорзины. Но после этого, до тех пор пока вы не измените оригинальное имя процедуры на cmdВернутьИзКорзины_Сliск, соответствующая кнопка во время выполнения будет просто торчать в форме тихо и безответно, независимо от того, сколько раз вы на ней щелкнете.
Поскольку при изменении имени кнопки VBA не удаляет соответствующие этой кнопке процедуры, вам не нужно создавать процедуру вновь, а нужно только изменить ее имя. Можно сделать и по-другому: начать новую процедуру обработки события для кнопки, а затем с помощью команд Cut (Вырезать) и Paste (Вставить) перенести программный код из оригинальной процедуры в новую.
Щелкните здесь...
В Windows щелчок ( Click) является квинтэссенцией всех событий. Вам приходится щелкать на пиктограммах, чтобы выбрать их, щелкать в документах - чтобы позиционировать точку ввода, в меню - чтобы открыть их, и на кнопках - чтобы активизировать связанные с ними функции. А раз щелчки столь часто используются в пользовательском интерфейсе Windows, вы непременно захотите, чтобы созданные вами формы отвечали на щелчки мыши. Однако для многих элементов управления не требуется создавать программный код специально для того, чтобы они отвечали на щелчок (почему это так, объясняется ниже, в разделе "Когда не нужно создавать процедуры обработки события Click''). Но для самого важного изо всех элементов управления - для кнопки - программный код создавать придется.
Очевидно, что каждая кнопка должна иметь процедуру обработки события Click, если вы хотите, чтобы кнопка делала что-нибудь полезное после щелчка на ней. Следующая процедура обработки события просто считает и отображает на экране число щелчков на кнопке:
Private Sub cmdCountClicks_Click ( )
' Объявление переменней intCount статической сохранит
' ее значение в промежутках между вызовами процедуры
Static intCount As Integer
intCount - intCount + 1
cmdCount Clicks.Caption = "Вы щелкали на этой кнопке " _
& intCount & " р а з ( а )."
End Sub
Представленный здесь программный код достаточно ясен. При каждом выполнении процедуры, которое происходит только после щелчка пользователя на кнопке, знамение переменной intCount увеличивается на 3. Это значение используется в строке, которая отображается на кнопке с помощью свойства Caption кнопки. Кстати, объявление переменной intCount как статической заставляет VBA сохранять значение этой переменной между вызовами этой процедуры обработки события. Если объявить переменную с помощью ключевого слова Dim, переменная будет инициализироваться при каждом вызове процедуры. Вот процедура обработки события для кнопки с именем cmdMoveThisForm:

