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

VBA Excel № 85. Событие BeforeSave и Deactivate.

Оглавление

BeforeSave

Событие BeforeSave возникает перед фактическим сохранением рабочей книги. При использовании команды "Файл => Сохранить как" появляется диалоговое окно Сохранение документа, если книга уже сохранялась. Процедура Workbook_BeforeSave позволяет предотвратить появление этого окна. В аргумент SaveAsUI передается значение True, если окно сохранения документа появляется. Например:

-2

Рассмотрим код более подробнее. Итак:

1. Private Sub Workbook_BeforeSave _(ByVal SaveAsUI As Boolean, Cancel As Boolean):

  • Private Sub: Обозначает, что это приватная (частная) процедура, доступная только внутри объекта Workbook.
  • Workbook_BeforeSave: Название процедуры. Она срабатывает перед сохранением книги.
  • (ByVal SaveAsUI As Boolean, Cancel As Boolean): Это объявление параметров, которые принимает эта процедура.
· SaveAsUI As Boolean: Этот параметр является логическим (Boolean) и указывает, было ли использовано диалоговое окно "Сохранить как" в процессе сохранения. Если значение True, то такое окно использовалось.
· Cancel As Boolean: Этот параметр также логический и используется для отмены операции сохранения. Если установлено значение True, сохранение будет отменено.

2. If SaveAsUI Then:

  • Это условное выражение, которое проверяет значение параметра SaveAsUI.
  • If SaveAsUI Then: Означает "если SaveAsUI равно True, выполнить следующий блок кода".

4. MsgBox "Убедитесь в том, что файл сохраняется в нужной папке.":

  • Эта строка кода вызывает сообщение (MessageBox), которое будет отображаться на экране пользователя.

Таким образом, если при сохранении книги использовалось диалоговое окно "Сохранить как" (SaveAsUI равно True), то появится сообщение, предупреждающее пользователя убедиться в том, что файл сохранен в нужной папке. Это дает пользователю дополнительное предупреждение или напоминание при условии использования определенного метода сохранения.

-3

Deactivate

Пример использования события Deactivate представлен на скриншоте ниже. Эта процедура выполняется при деактивации (отмене выбора) рабочей книги и не позволяет пользователю покинуть ее. При событии Deactivate код активизирует книгу и выводит сообщение:

-4

Так каков код?

-5

Этот код подчеркивает важность обработки событий в правильной последовательности. Процедура сработает корректно, только если пользователь активизирует другую книгу. Однако событие Deactivate вызывается также:

  • при закрытии рабочей книги,
  • при открытии новой книги,
  • при сворачивании окна.

Таким образом, процедура предотвращает активизацию другой книги, но не мешает закрытию, открытию новой или сворачиванию окна. Сообщение отобразится, но действия будут выполнены.