Обработчики событий и подробности о редактировании кода

Программы на VBA управляются событиями. Обработчик — это подпрограмма, которая будет выполняться если произойдет соответствующее ей событие.

На рис. 3.4. вы можете видеть окно редактора кода с открытым в нем пустым обработчиком.

Обработчики событий и подробности о редактировании кода - student2.ru


Рис. 3.4.Окно Code с обработчиком события нажатия на кнопку

Обратите внимание на первую строчку кода

Private Sub cmd_First_Click()

означает, что эта процедура будет выполнена при щелчке ( Click ) по кнопке с именем cmd_First. Ключевое слово Private называется модификатором доступности. Оно означает, что данная процедура недоступна для вызова из внешних модулей. Вам не придется настраивать модификаторы доступности вручную — по крайней мере, на данном этапе знакомства с VBA. Так же вам совсем необязательно запоминать тонкости правильного написания заголовков процедур обработчиков событий. Обычно они создаются автоматически.

У элементов управления существует обработчик события, назначаемый по умолчанию, то есть – при двойном щелчке. Обработчики других событий можно настроить в окне редактора кода.

Обратите внимание на верхнюю часть окна редактора кода. В левой ее части расположено поле со списком, в котором видна надпись cmd_First. Если щелкнуть по кнопке с треугольником, которая расположена рядом с этим полем, откроется список, содержащий имена всех элементов управления, расположенных на форме. Также в списке представлена и сама форма, у которой тоже есть свои события, — это строка UserForm. Имя формы в этом списке не применяется, но оно нужно для доступа к форме из внешних программ, например — макросов, обработчиков событий других форм.

В правой части окна расположен список событий.

Чтобы создать процедуру обработчика события для элемента управления или формы, выберите нужный элемент управления в левом поле, а в правом — название события. Каждый элемент управления имеет уникальный набор событий, однако, в них не слишком сложно ориентироваться. На практике чаще всего используется лишь некоторые из них. Обычно события имеют осмысленные англоязычные названия, по которым можно догадаться об их предназначении.

Теперь попытаемся вставить какие-нибудь команды в обработчик события. Пусть это будут строка комментария (она начинается с апострофа), поясняющая работу программы, и команда вывода сообщения.

Строки кода внутри программных конструкций принято писать с отступом. Это облегчает восприятие программы. Длинные строки можно разрывать на более короткие, ставя в конце этих строк знак "_".

Для удобства можно разбивать различные блоки программы пустыми строками.

Иногда при работе в редакторе кода удобно разделить окно на две части. Для этого служит горизонтальная полоска, расположенная в правой части окна, около верхней кнопки полосы прокрутки. Разделив окно, вы можете редактировать один участок кода, сверяясь с другим участком.

В левом нижнем углу окна редактора расположена пара кнопок. По умолчанию нажата кнопка Full Module View (Просмотр модуля целиком) то есть в окне редактора отображается код модуля целиком — со всеми процедурами и обработчиками событий. Если вы заняты редактированием какого-то одного модуля и не хотите отвлекаться на остальные — нажмите на кнопку Procedure View (Просмотр процедуры), которая скроет все процедуры кроме процедуры, код которой вы редактируете в настоящий момент.

Для вывода сообщений в VBA есть встроенная команда MsgBox.

Говоря о встроенных командах, часто используют слова "процедуры" и "функции". Главное отличие процедуры от функции – то, что функция возвращает в точку вызова какие-то значения, а процедура — нет. Однако, MsgBox может работать и как функция, и как процедура, поэтому и то и другое наименование будет правомерным.

Как и многие другие команды, она имеет множество параметров. Но вам совсем необязательно помнить их, обращаясь к MsgBox. Дело в том, что редактор кода снабжен очень удобной системой подсказок. Так же редактор может автоматически завершать команды ( Edit • Complete Word ).

Начните вводить в редакторе текст msgbox( причем именно строчными буквами. Если в итоге все будет введено верно, редактор автоматически преобразует msgbox в MsgBox. Если этого не произошло — возможно, вы допустили ошибку при написании имени команды. Итак, при правильном вводе команды, редактор распознает ее и предложит контекстную подсказку.

В контекстной подсказке по MsgBox можно почерпнуть информацию о структуре вызова этой функции, о тех параметрах, которые ей можно передать. Параметры — это те данные, с которыми будет работать функция. Например, мы передаем MsgBox строку для вывода в окне сообщения. В контекстной подсказке по MsgBox эта строка называется Prompt (Приглашение). Она выделена жирным шрифтом – это значит, то, что будет сейчас введено, воспримется как Prompt — то есть как текст, который будет выведен в окне сообщения. Текст, который вы передаете функции, должен быть заключен в кавычки.

Если поставить после введенного текста запятую, в контекстной подсказке жирным выделится следующий параметр. Если вы хотите оставить этот параметр в значении по умолчанию, ставьте еще одну запятую, и сможете ввести значение для очередного параметра и т.д.

При вызове процедур и функций им можно передавать параметры в таком виде:

MsgBox Prompt:="Привет!"

Здесь мы присвоили параметру Prompt значение "Привет", то есть наше окно должно вывести сообщение "Привет". Такой подход очень удобно использовать при вызове команд, принимающих множество параметров.

Мы не будем вводить другие параметры для окна сообщения — ограничимся только текстом и завершим ввод. Вот, что у нас получилось (рис. 3.5.).

Обработчики событий и подробности о редактировании кода - student2.ru


Рис. 3.5.Код обработчика события, выводящий окно сообщения

В итоге, код обработчика события будет выглядеть так (Листинг 3.1.):

'Вывод сообщенияMsgBox ("Здравствуйте! Я ваша первая программа на VBA")

Листинг 3.1. Код для вывода сообщения

Запустим форму на выполнение и нажмем на кнопку — появится окно с сообщением.

Наши рекомендации