Как сохранить файл excel при изменении определенной ячейки или диапазона

Что делает макрос:  Этот макрос позволяет определить диапазон ячеек и, если пользователь изменит значение хотя бы одной ячейки в этом диапазоне, файл сразу же сохранит эти изменения.

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

Секретом этого кода является метод Intersect. Поскольку мы не хотим, чтобы наш файл сохранялся при изменении любой ячейки, нам надо определять находится ли ячейка в диапазоне C5:C16.

Метод Intersect возвращает: либо объект Range, который определяет пересечение между двумя заданными диапазонами, или ничего. Так что, по сути, мы должны выделенную ячейку (Target) поместить в метод Intersect, чтобы проверить значение. В зависимости от результата будем сохранять файл или ничего не делать.

Код макроса

Sub Sohranitfail
'Шаг 1 - Проверка относится ли ячейка к диапазону
If Intersect(Target, Range("C5:C16")) Is Nothing Then
'Шаг 2 - Если нет, то выходим
Exit Sub
'Шаг 3 - Если да, то сохраняем книгу
Else
ActiveWorkbook.Save
'Шаг 4 - Завершаем проверку условий
End If
End Sub

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

  1. На шаге 1 проверяем, относится ли ячейка, которая изменилась, к области нашего диапазона. Сам диапазон определяем методом Intersect. Значение False (ЛОЖЬ) означает, что ячейка находится вне указанного диапазона.
  2. На шаге 2 останавливаем макрос и выходим из процедуры (ячейка же не в области — можно работать дальше ни о чём не думая).
  3. Если ячейка относится к диапазону, то на шаге 3 запускаем сохранения активной книги.
  4. На шаге 4, мы просто закрываем конструкцию If … Then … Else … End if (должны закрыть его с соответствующим End If)

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

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

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. В окне проекта найдите свой проект/имя рабочей книги и нажмите на знак плюс рядом с ним в чтобы увидеть все листы.
  3. Правой кнопкой мыши нажмите на листе, из которого вы хотите, чтобы вызывался код, и выберите View Code
  4. В левой части открывшегося окна выберите лист (автоматически создаст макрос)
  5. Введите или вставьте код в вновь созданном модуле. При необходимости измените диапазон и другие параметры.
Оцените статью
Добавить комментарий