Что делает макрос
Этот макрос защищает от случайного закрытия файла перед сохранением. Он гарантирует, что Excel автоматически сохранит файл перед закрытием. Excel обычно предупреждает пользователей, которые пытаются закрыть не сохраненную книгу, давая им возможность сохранить перед закрытием. Тем не менее, многие пользователи могут пропустить это предупреждение случайно нажать кнопку Нет. С этим макросом Вы защитите свой файл от невнимательных пользователей.
Как это работает
Этот код запускается событием рабочей книги (BeforeClose- перед закрытием). При нажатии на кнопку Закрыть срабатывает событие и запускается макрос. Суть кода проста - он запрашивает у пользователя действительно ли он хочет закрыть книгу
Код макроса
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Select Case MsgBox("Сохранить и закрыть?", vbOKCancel) '1 Выведем сообщение с ОК и Отмена
Case Is = vbCancel '2 Если нажал Отмена, закрываем окно
Cancel = True
Case Is = vbOK '3 Если нажал Да, то сохраняем книгу
ActiveWorkbook.Save
End Select '4 Завершаем проверку, закрываем Select Case
End Sub
Как работает этот код
Давайте подробно рассмотрим каждую строчку кода
- На шаге 1 мы активируем окно c сообщением, где в качестве проверки используем оператор Select Case. Здесь мы используем аргумент vbOKCancel, чтобы на формочке отображались кнопки ОК и Отмена.
- Если пользователь нажал кнопку Отмена в окне сообщения, макрос говорит Excel: "Не выходим! Закрой событие!". Это делается путем присвоения переменной Cancel свойства True (Верно). Если пользователь нажал кнопку OK в окне сообщений, п. 3 вступает в силу.
- Здесь мы говорим Excel: "Сохранить книгу!". Здесь мы не пишем Cancel = True, поэтому событие успешно завершается.
- На шаге 4, мы просто закрываем Оператор Select Case.
Как использовать
Для реализации этого макроса, Вам нужно скопировать и вставить его в код события Workbook_BeforeClose. Размещение макроса здесь позволяет запускать макрос непосредственно перед закрытием excel-файла.
- Активируйте редактор Visual Basic, нажав ALT + F11.
- В окне проекта найдите свой проект/имя рабочей книги и нажмите на знак плюс рядом с ним в чтобы увидеть все листы и модуль ЭтаКнига.
- Правой кнопкой мыши нажмите на модуле ЭтаКнига и выберите View Code
- В левой части окна выберите объект WorkBook (Excel автоматом предложит написать макрос для события Workbook_Open (можете позже удалить его за ненадобностью)
- В правом выпадающем списке свойство BeforeClose
|