Что делает макрос: не даем закрыть книгу пользователю, пока целевая ячейка не будет заполнена с помощью макроса.
Как макрос работает
Этот код срабатывает на событие BeforeClose книги. При попытке закрыть книгу, это событие выполняет код внутри макроса. Таким образом макрос проверяет целевую ячейку (ячейка С7, в данном случае является пустой). Если она пустая, процесс закрытия отменяется. Если ячейка С7 не пустая, книга сохраняется и закрывается.
Код Макроса
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Шаг 1: Проверяем пустая ли ячейка C7
If Sheets("Лист1").Range("C7").Value = "" Then
'Шаг 2: Если пустая, отменить закрытие книги
Cancel = True
MsgBox "Ячейка C7 не может быть пустой"
'Шаг 3: Если не пустая, сохранить и закрыть
Else
ActiveWorkbook.Close SaveChanges:=True
End If
End Sub
Как работает этот код
- Проверяем ячейку C7 на пустоту (можете заменить любую другую).
- Если ячейка пустая, то отменяем событие закрытия книги, закрывает и сообщает пользователю.
- Показываем окно сообщения, уведомляющее пользователя о своей глупости (ну, это не совсем так жестко, на самом деле).
- Если ячейка C7 не пустая, файл сохраняется и закрывается.
Как использовать
Для реализации этого макроса, вам нужно скопировать и вставить его в окно кода события Workbook_BeforeClose. Размещение макроса позволяет запускать каждый раз, когда вы пытаетесь закрыть книгу.
- Активируйте редактор Visual Basic, нажав ALT + F11.
- В окне проекта, найти свой проект / имя рабочей книги и нажмите на знак плюс рядом с ней, чтобы увидеть все листы.
- Нажмите кнопку ThisWorkbook.
- Выберите событие BeforeClose в раскрывающемся списке
- Введите или вставьте код во вновь созданном модуле.