Не даем закрыть книгу до тех пор, пока не заполнит ячейку

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

Как макрос работает

Этот код срабатывает на событие 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

Как работает этот код

  1. Проверяем ячейку C7 на пустоту (можете заменить любую другую).
  2. Если ячейка пустая, то отменяем событие закрытия книги, закрывает и сообщает пользователю.
  3. Показываем окно сообщения, уведомляющее пользователя о своей глупости (ну, это не совсем так жестко, на самом деле).
  4. Если ячейка C7 не пустая, файл сохраняется и закрывается.

Как использовать

Для реализации этого макроса, вам нужно скопировать и вставить его в окно кода события Workbook_BeforeClose. Размещение макроса позволяет запускать каждый раз, когда вы пытаетесь закрыть книгу.

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. В окне проекта, найти свой проект / имя рабочей книги и нажмите на знак плюс рядом с ней, чтобы увидеть все листы.
  3. Нажмите кнопку ThisWorkbook.
  4. Выберите событие BeforeClose в раскрывающемся списке
  5. Введите или вставьте код во вновь созданном модуле.
Оцените статью
Добавить комментарий