Обучение Excel для всех
Обучение Excel
БЕЗ ВЫХОДНЫХ

Макросы

Главная » Макросы » Готовые макросы » Работа с книгами Скачать Excel-файл

Макроc 2. Сохранение книги при изменении определенной ячейки/диапазона

 

Что делает макрос


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

 

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


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

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

 

Код макроса

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

 

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


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