Понякога може да искате да изтриете всички освен активния работен лист в работна книга на Excel. В тези ситуации можете да използвате следния макрос.
Как работи макросът
Макросът тук преминава през работните листове, като съпоставя името на всеки работен лист с името на активния лист. Всеки път, когато макросът зацикли, той изтрива всеки несравним работен лист. Обърнете внимание на използването на свойството DisplayAlerts в стъпка 4. Това ефективно изключва предупрежденията на Excel, така че не е нужно да потвърждавате всяко изтриване.
Подмакрос1()
„Стъпка 1: Декларирайте вашите променливи
Dim ws като работен лист
„Стъпка 2: Започнете да преглеждате всички работни листове
За всеки ws В тази работна книга.Работни листове
„Стъпка 3: Проверете името на всеки работен лист
Ако ws.Name <> ThisWorkbook.ActiveSheet.Name Тогава
„Стъпка 4: Изключете предупрежденията и изтрийте
Application.DisplayAlerts = False
ws.Изтриване
Application.DisplayAlerts = Вярно
Край, ако
„Стъпка 5: Преминаване към следващия работен лист
Следващата ws
Край под
Макросът първо декларира обект, наречен ws. Тази стъпка създава контейнер с памет за всеки работен лист, през който преминава.
В стъпка 2 макросът започва да се завърта, като казва на Excel, че ще оцени всички работни листове в тази работна книга. Има разлика между ThisWorkbook и ActiveWorkbook. Обектът ThisWorkBook се отнася до работната книга, която съдържа кода. Обектът ActiveWorkBook се отнася до активната в момента работна книга. Те често връщат един и същ обект, но ако работната книга, изпълняваща кода, не е активната работна книга, те връщат различни обекти. В този случай не искате да рискувате да изтриете листове в други работни книги, така че използвате ThisWorkBook.
В стъпка 3 макросът просто сравнява името на активния лист с листа, който в момента се завърта.
В стъпка 4, ако имената на листове са различни, макросът изтрива листа. Както споменахме, използвате DisplayAlerts, за да потискате всички проверки за потвърждение от Excel. Ако искате да бъдете предупредени, преди да изтриете листовете, можете да пропуснете Application. DisplayAlerts = False. Пропускането на изявлението DisplayAlerts ще гарантира, че ще получите показаното съобщение, което ви позволява да се откажете от решението за изтриване на работни листове.
В стъпка 5 макросът се връща обратно, за да получи следващия лист. След като всички листове бъдат оценени, макросът приключва.
Пропуснете изявлението DisplayAlerts, за да видите предупредителни съобщения.
Как да използвате макроса
За да приложите този макрос, можете да го копирате и поставите в стандартен модул:
Активирайте редактора на Visual Basic, като натиснете Alt+F11.
Щракнете с десния бутон върху името на проекта/работната книга в прозореца на проекта.
Изберете Вмъкване→Модул.
Въведете или поставете кода в новосъздадения модул.
Когато използвате ThisWorkbook вместо ActiveWorkbook в макрос, не можете да стартирате макроса от личната работна книга с макроси. Защо? Тъй като ThisWorkbook ще се отнася до личната работна книга с макроси, а не към работната книга, за която макросът трябва да се прилага.