Найти тему
VBA Excel с нуля

VBA Excel № 78. События в ранних версиях Excel.

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

Программирование событий в ранних версиях Excel было осуществлено иначе, чем в более поздних версиях, начиная с Excel 97. Давайте рассмотрим некоторые аспекты этого процесса.

В старых версиях Excel (до 97), события поддерживались, но подход к программированию был отличным от того, что мы видим в современных версиях. Допустим, у нас есть процедура, называемая "Вывод_Данных", хранящаяся в модуле VBA общего назначения. В этих версиях она будет запускаться каждый раз при открытии рабочей книги.

В Excel 97 появился новый способ программирования этого события. Теперь мы можем использовать обработчик события Workbook_Open, который хранится в модуле кода для объекта ThisWorkbook (ЭтаКнига). Этот обработчик будет выполняться перед запуском процедуры "Вывод_Данных".

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

До Excel 97 приходилось явно настраивать события. Например, чтобы запустить процедуру «Что_то_сделать» каждый раз при вводе данных в ячейку, нужно было использовать оператор:

Sheets("Лист1").OnEntry= "Что_то_сделать"

Этот оператор указывает Excel запускать процедуру "Что_то_сделать" при каждом вводе данных в ячейку на Листе1.

В Excel 97 и более новых версиях этого достаточно создать процедуру "Worksheet_Change", хранящуюся в модуле кода для объекта "Лист1".

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

А, например, сама процедура может находиться как в модуле кода для объекта "Лист1", так и в модуле VBA общего назначения(см. скриншот ниже).

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

Важно отметить, что из соображений совместимости Excel 97 и более поздние версии всё еще поддерживают предыдущий метод программирования событий (и это не описано в справочной системе).

Наука
7 млн интересуются