Представеният тук макрос е отличен начин да защитите потребителите от неволно затваряне на файла си преди запазване. Когато е внедрен, този макрос гарантира, че Excel автоматично запазва работната книга, преди да я затвори.
Excel обикновено предупреждава потребителите, които се опитват да затворят незапазена работна книга, като им дава възможност да запазят преди затваряне. Въпреки това, много потребители могат да преминат през предупреждението и неволно да щракнат върху Не, казвайки на Excel да затвори, без да записва. С този макрос вие се предпазвате от това, като автоматично записвате преди затваряне.
Как работи макросът
Кодът се задейства от събитието BeforeClose на работната книга. Когато се опитате да затворите работната книга, това събитие се задейства, изпълнявайки кода вътре. Същността на кода е проста - той пита потребителите дали искат да затворят работната книга. След това макросът оценява дали потребителят е щракнал върху OK или Cancel.
Съобщението, което виждате, когато се опитате да затворите работната книга.
Оценката се извършва с оператор Select Case. Инструкцията Select Case е алтернатива на оператора If-Then-Else, която ви позволява да извършвате проверки на условието във вашите макроси. Основната конструкция на изявлението Select Case е проста:
Изберете Case
Случай е =
Случай е =
Случай е =
Край Изберете
С оператор Select Case можете да извършите много условни проверки. В този случай просто проверявате за OK или Отказ. Разгледайте кода:
Частна под работна книга_BeforeClose(Отказ като булева)
„Стъпка 1: Активирайте полето за съобщения и започнете проверката
Изберете Case MsgBox("Запазване и затваряне?", vbOKCancel)
„Стъпка 2: Бутонът за отмяна е натиснат, така че отменете затварянето
Случай е = vbCancel
Отказ = Вярно
„Стъпка 3: Бутонът OK е натиснат, така че запазете работната книга и затворете
Случай е = vbOK
ActiveWorkbook.Save
„Стъпка 4: Затворете изявлението Select Case
Край Изберете
Край под
В стъпка 1 активирате полето за съобщение като проверка на условието за оператора Select Case. Използвате аргумент vbOKCancel, за да сте сигурни, че бутоните OK и Cancel са представени като избор.
В стъпка 2, ако потребителят е щракнал върху Отказ в полето за съобщение, макросът казва на Excel да отмени събитието Workbook_Close, като подаде True на булевото значение Cancel.
Ако потребителят щракне върху бутона OK в полето за съобщение, стъпка 3 влиза в сила. Тук казвате на Excel да запази работната книга. И тъй като не сте задали за Cancel Boolean на True, Excel продължава със затварянето.
В стъпка 4 просто затваряте изявлението Select Case. Всеки път, когато създавате экземпляр на Select Case, трябва да го затворите със съответен End Select.
Как да използвате макроса
За да приложите този макрос, трябва да го копирате и поставите в прозореца с код на събитието Workbook_BeforeClose. Поставянето на макроса там му позволява да се изпълнява всеки път, когато се опитате да затворите работната книга:
Активирайте редактора на Visual Basic, като натиснете Alt+F11.
В прозореца на проекта намерете името на вашия проект/работна книга и щракнете върху знака плюс до него, за да видите всички листове.
Щракнете върху Тази работна книга.
В падащия списък Събитие изберете събитието Преди затваряне.
Въведете или поставете кода в новосъздадения модул.
Въведете кода си в събитието Workbook BeforeClose.