Найти в Дзене
VBA Excel с нуля

VBA Excel № 77. Размещение процедур обработки событий в VBA.

Размещение процедур обработки событий в VBA-приложениях является важным аспектом, который часто вызывает вопросы у начинающих разработчиков. Они могут столкнуться с ситуацией, когда их процедуры обработки событий не запускаются при наступлении соответствующих событий. Одной из причин этой проблемы может быть неправильное размещение процедур в коде. В редакторе VBA все проекты представлены в окне Projects (Проекты). Каждый компонент проекта доступен в списке, который отображается в окне редактора кода. Рассмотрим основные компоненты и места для размещения процедур обработки событий, указанных в скриншоте: 1. Объекты Sheet (Лист): этот компонент соответствует конкретным листам (например, Лист1, Лист2 и так далее). Здесь следует размещать код обработчиков событий, связанных с определенным листом. 2. Объект Chart (листы диаграммм): в этом компоненте находятся коды обработчиков событий, связанных с диаграммами. 3. Объект ThisWorkbook (ЭтаКнига): здесь следует размещать коды обработчиков со
Скриншот с моего ноутбука
Скриншот с моего ноутбука

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

Одной из причин этой проблемы может быть неправильное размещение процедур в коде.

В редакторе VBA все проекты представлены в окне Projects (Проекты). Каждый компонент проекта доступен в списке, который отображается в окне редактора кода. Рассмотрим основные компоненты и места для размещения процедур обработки событий, указанных в скриншоте:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

1. Объекты Sheet (Лист): этот компонент соответствует конкретным листам (например, Лист1, Лист2 и так далее). Здесь следует размещать код обработчиков событий, связанных с определенным листом.

2. Объект Chart (листы диаграммм): в этом компоненте находятся коды обработчиков событий, связанных с диаграммами.

3. Объект ThisWorkbook (ЭтаКнига): здесь следует размещать коды обработчиков событий, связанных с рабочими книгами.

4. Модули (Module) VBA общего назначения: процедуры обработки событий не могут быть размещены в модуле общего назначения, который не связан с каким-либо объектом.

5. Объекты UserForm: этот компонент предназначен для размещения кода обработки событий, связанных с объектами UserForm или элементами управления, находящимися в окне UserForm.

6. Модули классов: в модулях классов можно определять обработчики событий специального назначения, включая события уровня приложения и события для внедренных диаграмм.

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

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

Скриншот с моего ноутбука
Скриншот с моего ноутбука