Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1888.DOC
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
5.52 Mб
Скачать

6.1.9. Структура кода процедуры

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

Sub ИмяПроцедуры(СписокПараметров)

Инструкции

End Sub

СписокПараметров – это список параметров, от которых зависит функция. Разделителем в списке параметров является запятая. Список параметров, вообще говоря, может быть и пуст.

Инструкции – это последовательность инструкций, выполняемых при проведении процедуры. В совокупности они образуют так называемое «тело» процедуры.

Допустим, досрочный выход из процедуры по инструкции Exit Sub. В теле процедуры может располагаться несколько инструкций Exit Sub.

6.1.10. Процедура обработки события

Кроме обычных процедур, в VBA имеются процедуры, обрабатывающие события, связанные с тем или иным объектом. В общем случае такие процедуры имеют следующий вид:

[Private] Sub ИмяОбьекта_ИмяСобытия(СписокПараметров)

Инструкции

End Sub

Ключевое слово Private является модификатором доступа и обозначает, что процедура видна другим процедурам только в модуле, в котором она располагается. Например, процедура обработки события активизации рабочего листа имеет вид:

Private Sub Worksheet_Activate()

Инструкции

End Sub

6.1.11. Элемент управления «Кнопка» и создание процедуры обработки события

В данном разделе создадим на рабочем листе Лист1 кнопку, нажатие на которую будет приводить к активизации рабочего листа Лист2. Первоначально выберем рабочий лист Лист1.

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

Прежде всего переведем Excel в режим конструктора элементов управления. Для этого нужно нажать кнопку Режим конструктора панели инструментов Элементы управления. Теперь можно активизировать элемент управления Кнопка и нарисовать кнопку точно так же, как и при помощи любого графического редактора, в том месте рабочего листа, где нужно расположить кнопку.

Как и любой графический объект, кнопку можно рисовать при нажатой клавише Shift, что обеспечит ей квадратную форму, либо при нажатой клавише Alt – для привязки кнопки к сетке рабочего листа. У созданной кнопки при помощи маркеров изменения размеров можно задать размеры, а при помощи маркера перемещения – установить ее местоположение.

На поверхности первого созданного элемента управления Кнопка автоматически будет отображена надпись CommandButton1 (рис. 6.8). Если создать второй элемент управления Кнопка, то на его поверхности отобразится CommandButton2 и т. д.

Элемент управления Кнопка является объектом, т. е. он, как и любой объект, обладает свойствами, методами и событиями. Надпись, отображаемая на поверхности элемента управления Кнопка, задается значением свойства Caption. Кроме того, элемент управления Кнопка имеет свойство Name, которое в коде идентифицирует его как объект. В данном случае оно тоже равно CommandButton1.

Рис. 6.8. Кнопка и окно Properties

Изменим значение свойства Caption, т. е. надпись, отображаемую на поверхности кнопки с CommandButton1 на Лист2 (с тем, чтобы подчеркнуть, что эта кнопка будет активизировать рабочий лист Лист2). Для этого надо нажать кнопку Свойства панели инструментов Элементы управления. На экране отобразится окно Properties. Введем в поле Caption этого окна значение Лист2 и закроем окно Properties.

Теперь можно перейти к созданию кода процедуры, обрабатывающей событие Нажатие на кнопку. В результате обработки этого события должен активизироваться рабочий лист Лист2. Для этого дважды щелкнем на созданной кнопке (напоминаем, что все это еще происходит в режиме конструктора). В результате откроется редактор VBA с активизированным модулем рабочего листа (в данном случае, Лист1). Кроме того, двойной щелчок по кнопке создаст в модуле первую и последнюю инструкции процедуры обработки события Нажатие на кнопку:

Private Sub CommandButton1_Click()

End Sub

Вот теперь нам пригодится ранее созданный макрос. Из его кода видно, что активизацией (в данном случае, точнее сказать, выбором) рабочего листа управляет одна инструкция: Sheets("Лист2").Select.

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

Private Sub CommandButton1_Click()

Sheets ("Лист2").Select

End Sub

Итак, процедура создана. Осталось только вернуться на рабочий лист Лист1. Созданная кнопка будет обрабатывать событие (нажатие на нее) только после выхода из режима конструктора. Поэтому нужно отключить режим конструктора нажатием кнопки Режим конструктора панели инструментов Элементы управления. Теперь можно и протестировать созданную кнопку, нажав на нее. Если все было правильно сделано, то это приведет к активизации рабочего листа Лист2.