У Excel ви можете працювати з даними, які є настільки чутливими, що вам захочеться зберігати щоразу, коли змінюється конкретна клітинка або діапазон комірок. Цей макрос дозволяє визначати діапазон комірок, які при зміні змушують книгу зберігати.
У наведеному прикладі ви хочете, щоб книга зберігалася під час редагування будь-якої з комірок у діапазоні C5:C16.
Зміна комірки в C5:C16 змушує книгу зберегти.
Як працює макрос
Секретом цього коду є метод Intersect. Оскільки ви не хочете зберігати робочий аркуш, коли змінюється будь-яка стара клітинка, ви використовуєте метод Intersect, щоб визначити, чи перетинається цільова клітинка (комірка, яка змінена) з діапазоном, зазначеним як діапазон тригера (C5:C16 у цьому випадку). .
Метод Intersect повертає одну з двох речей: об’єкт Range, який визначає перетин між двома заданими діапазонами, або нічого. Таким чином, по суті, вам потрібно кинути цільову клітинку проти методу Intersect, щоб перевірити значення Nothing. У цей момент ви можете вирішити, чи зберігати книгу.
Приватний допоміжний робочий лист_Change(ByVal Target As Range)
«Крок 1: Чи перетинається змінений діапазон?
Якщо Intersect(Target, Range("C5:C16")) - це нічого
«Крок 2: Якщо перехрестя немає, процедура виїзду
Вийти з суб
«Крок 3: Якщо є перехрестя, збережіть робочу книгу
Інакше
ActiveWorkbook.Save
«Крок 4: закрийте оператор If
Кінець Якщо
Кінець суб
На кроці 1 ви просто перевіряєте, чи цільова клітинка (комірка, яка змінилася) знаходиться в діапазоні, визначеному методом Intersect. Значення Nothing означає, що цільова клітинка знаходиться за межами вказаного діапазону.
Крок 2 змушує макрос зупинитися та вийти з процедури, якщо немає перетину між цільовою коміркою та вказаним діапазоном.
Якщо є перетин, крок 3 запускає метод збереження активної книги, замінюючи попередню версію.
На кроці 4 ви просто закриваєте оператор If. Кожен раз, коли ви починаєте перевірку If-Then-Else, ви повинні закривати її відповідним End If.
Як використовувати макрос
Щоб реалізувати цей макрос, вам потрібно скопіювати та вставити його у вікно коду події Worksheet_Change. Розміщення макросу тут дозволяє йому запускатися щоразу, коли ви вносите будь-які зміни в аркуш:
Активуйте редактор Visual Basic, натиснувши Alt+F11.
У вікні проекту знайдіть назву проекту/книги та клацніть знак плюса біля нього, щоб побачити всі аркуші.
Клацніть на аркуші, з якого потрібно запустити код.
У спадному списку «Подія» виберіть подію «Змінити».
Введіть або вставте код у щойно створений модуль, змінивши адресу діапазону відповідно до ваших потреб.
Введіть свій код у подію Worksheet Change.