Има моменти, когато не искате потребител да затваря работна книга на Excel, без да въвежда конкретна част от данни. В тези ситуации би било полезно да се откаже на потребителя възможността да затвори работната книга, докато целевата клетка не бъде попълнена (както е показано тук). Тук идва този изящен макрос.
Предотвратете затварянето, докато не се попълни конкретна клетка.
Как работи макросът
Този код се задейства от събитието BeforeClose на работната книга. Когато се опитате да затворите работната книга, това събитие се задейства, изпълнявайки кода вътре. Този макрос проверява дали целевата клетка (клетка C7 в този случай) е празна. Ако е празен, процесът на затваряне се отменя. Ако C7 не е празен, работната книга се записва и затваря:
Частна под работна книга_BeforeClose(Отказ като булева)
„Стъпка 1: Проверете дали клетка C7 е празна
Ако Sheets("Sheet1").Range("C7").Стойност = " Тогава
„Стъпка 2: Ако клетката е празна, отменете затварянето и кажете на потребителя
Отказ = Вярно
MsgBox "Клетка C7 не може да бъде празна"
„Стъпка 3: Ако клетката не е празна, запазете и затворете
иначе
ActiveWorkbook.Close SaveChanges:=Вярно
Край, ако
Край под
Стъпка 1 проверява дали C7 е празен.
Ако C7 е празен, стъпка 2 влиза в сила, като отменя процеса на затваряне, като предава True на булевото значение Cancel. Стъпка 2 също активира поле за съобщение, уведомяващо потребителя за неговата или нейната глупост (е, всъщност не е толкова грубо).
В стъпка 3, ако клетка C7 не е празна, работната книга се запазва и затваря.
Как да използвате макроса
За да приложите този макрос, трябва да го копирате и поставите в прозореца с код на събитието Workbook_BeforeClose. Поставянето на макроса тук му позволява да се изпълнява всеки път, когато се опитате да затворите работната книга:
Активирайте редактора на Visual Basic, като натиснете Alt+F11.
В прозореца на проекта намерете името на вашия проект/работна книга и щракнете върху знака плюс до него, за да видите всички листове.
Щракнете върху Тази работна книга.
В падащия списък Събитие изберете събитието Преди затваряне.
Въведете или поставете кода в новосъздадения модул.
Въведете кода си в събитието Workbook BeforeClose.