В Excel може да работите върху данни, които са толкова чувствителни, че ще искате да запазвате всеки път, когато се промени определена клетка или диапазон от клетки. Този макрос ви позволява да дефинирате диапазон от клетки, които при промяна принуждават работната книга да се запази.
В показания пример искате работната книга да се запази, когато се направи редакция на която и да е от клетките в диапазона C5:C16.
Промяната на клетка в C5:C16 принуждава работната книга да се запази.
Как работи макросът
Тайната на този код е методът Intersect. Тъй като не искате да запазвате работния лист, когато някоя стара клетка се промени, използвате метода Intersect, за да определите дали целевата клетка (променената клетка) се пресича с диапазона, посочен като диапазон на задействане (C5:C16 в този случай) .
Методът Intersect връща едно от двете неща: обект Range, който дефинира пресечната точка между двата дадени диапазона или нищо. Така че по същество трябва да хвърлите целевата клетка срещу метода Intersect, за да проверите за стойност на нищо. В този момент можете да решите дали да запазите работната книга.
Частен под работен лист_Промяна (ByVal цел като диапазон)
„Стъпка 1: Промененият диапазон пресича ли се?
Ако Intersect(Target, Range("C5:C16")) е нищо, тогава
„Стъпка 2: Ако няма кръстовище, излезте от процедурата
Изход Sub
„Стъпка 3: Ако има кръстовище, запазете работната книга
иначе
ActiveWorkbook.Save
„Стъпка 4: Затворете оператора If
Край, ако
Край под
В стъпка 1 просто проверявате дали целевата клетка (клетката, която се е променила) е в диапазона, определен от метода Intersect. Стойност Нищо означава, че целевата клетка е извън посочения диапазон.
Стъпка 2 принуждава макроса да спре и да излезе от процедурата, ако няма пресечна точка между целевата клетка и посочения диапазон.
Ако има пресичане, стъпка 3 задейства метода Save на активната работна книга, презаписвайки предишната версия.
В стъпка 4 просто затваряте оператора If. Всеки път, когато стартирате проверка If-Then-Else, трябва да я затворите със съответното End If.
Как да използвате макроса
За да приложите този макрос, трябва да го копирате и поставите в прозореца с код на събитието Worksheet_Change. Поставянето на макроса тук му позволява да се изпълнява всеки път, когато правите промяна в листа:
Активирайте редактора на Visual Basic, като натиснете Alt+F11.
В прозореца на проекта намерете името на вашия проект/работна книга и щракнете върху знака плюс до него, за да видите всички листове.
Щракнете върху листа, от който искате да задействате кода.
В падащия списък Събитие изберете Промяна на събитието.
Въведете или поставете кода в новосъздадения модул, като промените адреса на диапазона, за да отговаря на вашите нужди.
Въведете кода си в събитието Промяна на работния лист.