Программирование событий в ранних версиях 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 и более поздние версии всё еще поддерживают предыдущий метод программирования событий (и это не описано в справочной системе).