Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание пользовательских п ÒÉÌÏÖÅÎÉÊ ÓÒÅÄÓÔÁÍ...doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
2.02 Mб
Скачать

Вызов процедур другого проекта

Для вызова процедур некоторого проекта из процедур любого другого проекта необходимо установить ссылку на проект. Но прежде необходимо каждой используемой рабочей книге присвоить уникальное имя проекта. Это можно сделать, используя окно свойств проекта (см. рис. 2.2).

Чтобы установить ссылку в вызывающем проекте, активизируйте его в окне проекта и выполните команду Tools-References (Сервис-Ссылки).

Рис. 5.1. Установка ссылки на проект Project1

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

На рис. 5.1 видно, что в проекте Personal установлена ссылка на проект Project1, который является рабочей книгой air.xls. Это делает доступными общие процедуры проекта Project1 в модулях проекта Personal. В окне проекта Personal появляется папка References, в которой и хранятся ссылки на другие проекты.

Теперь в процедуре проекта Personal можно вызвать любую процедуру из проекта Project1, например, Project1.Модуль2.book_sheet.

Замечание

  • Циклические ссылки между проектами запрещены. Если в проекте Personal установлена ссылка на проект Project1, невозможно установить в проекте Project1 ссылку на проект Personal.

Автопроцедуры

Если процедурам присвоить специальные имена, то они запускаются автоматически.

  • Процедура с именем Auto_Open автоматически запускается при открытии рабочей книги или приложения MS Excel.

  • Процедура с именем Auto_Close автоматически запускается при закрытии рабочей книги или приложения MS Excel.

Обычно в этих процедурах создаются панели инструментов, разрешается или отменяется их высвечивание, производятся настройки экрана или изменяются меню.

Запомните

  • Если процедуры с указанными именами записываются в Личную книгу макросов (Personal Macro Workbook), то они автоматически выполняются при открытии или закрытии приложения.

Пример

Sub auto_Open()

Workbooks.Open "d:\bel_acc\macros\air.xls"

End Sub

Процедура, записанная в Personal Macro Workbook, автоматически открывает рабочую книгу air.xls при старте MS Excel.

Важно

  • Нажатие клавиши Shift при открытии или при закрытии рабочей книги предотвращает выполнение автоматической процедуры.

Событийные процедуры

С каждым объектом приложения или формы связан определенный набор событий. Процедуры обработки событий позволяют выполнить некоторые действия при наступлении того или иного события, связанного с объектом приложения.

Событийные процедуры записываются на процедурных листах. Двойной щелчок на объект в окне проекта (рабочая книга, рабочий или диаграммный лист, форма) открывает процедурный лист, связанный с выбранным объектом приложения.

Событийные процедуры имеют составные имена: название или тип объекта и названия события, разделенные нижним подчеркиванием (_). Например, процедура с именем Workbook_Open выполняется при открытии рабочей книги, для которой эта процедура написана. Имена присваиваются событийным процедурам автоматически.

Пример

На рис. 5.2. в окне проекта выбрана рабочая книга (объект Эта книга). В списке объектов на процедурном листе рабочей книги выбран объект Workbook. Как следствие в списке процедур раскрыт список событий объекта Workbook.

Рис. 5.2. Выбор события для объекта Эта книга

Для события Open, выбранного из списка событий, в окне программы появились операторы начала и конца соответствующей событийной процедуры. Имя процедуры установлено автоматически. Теперь можно записать операторы, которые должны выполняться при наступлении события – открытие рабочей книги.

Private Sub Workbook_Open()

Range("A1") = ThisWorkbook.Name

Range("A2") = ActiveSheet.Name

End Sub

При открытии рабочей книги iserror название рабочей книги и активного рабочего листа помещаются в ячейки таблицы A1 и A2 соответственно.