VBA Изтриване на лист - Как да изтрия работен лист с помощта на VBA код?

Excel VBA Изтриване на лист

За да изтриете лист във VBA, ние използваме метод за изтриване на работен лист. За да приложим този метод първо, трябва да определим кой лист изтриваме, като извикаме името на листа. Имаме два метода, за да направим същото, първо директно пишем sheet1.delete, а вторият метод е sheet (sheet1) .delete.

Така че синтаксисът следва.

Работни листове („Име на работен лист“). Изтриване

ИЛИ

Таблици („Име на лист“). Изтриване

И така, първо, трябва да посочим името на листа, като използваме или Worksheet, или Sheets Object, след това по-късно можем да използваме метода “Delete” .

Как да изтрия Excel Sheets с помощта на VBA код?

Пример # 1 - Изтрийте работния лист, като използвате името му

Да приемем, че имате много листове и за да изтриете конкретния работен лист, трябва да споменем работния лист с името му. Например имам 3 различни листа, наречени „Продажби 2016“, „Продажби 2017“ и „Продажби 2018“.

Ако искам да изтрия листа с име „ Продажби 2017 “, тогава трябва да спомена името на листа, както е показано по-долу.

Код:

Подтрия Delete_Example1 () Работни листове ("листове 2017"). Крайна под

Проблемът с директното споменаване на името на работния лист не виждаме списъка IntelliSense на VBA. Винаги споменавайте метода като „ Изтриване“.

Код:

Sub Delete_Example1 () Работни листове ("листове 2017"). Изтриване Край Sub

Така че това ще изтрие листа с име „ Продажби 2017 “.

Грешка при изтриване на работния лист: Ако се опитаме да изтрием работния лист, който не съществува, или ако споменем името на работния лист погрешно, тогава ще получим грешката на VBA като „Индекс извън обхвата“.

По-горе получих грешка „Subscript Out of Range“, тъй като в работната ми книга няма име на лист, наречено „Продажби 2017“.

Пример # 2 - Изтрийте работния лист по името му с променливи

Както видяхме в горния пример, в момента, в който се позовем на името на работния лист, като използваме обекта Worksheets, не виждаме списъка IntelliSense. За да видим списъка IntelliSense, трябва да използваме променливи.

Стъпка 1: Първо декларирайте променливата като Работен лист .

Код:

Sub Delete_Example2 () Dim Ws As Worksheet End Sub

Стъпка 2: Тъй като работният лист е обектна променлива, трябва да зададем променливата на конкретния работен лист, като използваме думата „ SET “.

Код:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales 2017") End Sub

Сега променливата „Ws“ се отнася до работния лист, наречен „Продажби 2017“.

Стъпка 3: Сега, използвайки променливата „ Ws “, можем да осъществим достъп до целия списък на IntelliSense на работния лист.

Код:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales 2017") Ws. Крайна под

Стъпка 4: От списъка IntelliSense изберете метода “ Delete ”.

Код:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales 2017") Ws.Delete End Sub

Подобно на това, използвайки променливи, ние можем да получим достъп до списъка IntelliSense.

Пример # 3 - Изтриване на Активен работен лист

Активен лист не е нищо друго освен който и да е работен лист, активен или избран в момента. За този метод не е необходимо да споменаваме името на работния лист. Например погледнете кода по-долу VBA.

ActiveSheet.Delete

В момента активният лист е „Продажби 2017“.

Ако стартирам кода, той ще изтрие активния лист, т.е. „Продажби 2017“.

Сега ще избера „Продажби 2016“.

Сега ще изтрие активния лист, т.е. „Продажби 2016“.

Like this, we can use the “Active Sheet” object to delete the worksheet.

Note: To use this method, we need to absolutely sure of what we are doing with the Active Sheet and which sheet is going to be an active sheet.

Example #4 - Delete More than One Worksheet

In our above examples, we have seen how to delete a single sheet, but what if we have multiple worksheets? Let’s say we want to delete 10 worksheets.

We cannot keep writing 10 lines of code to delete the worksheet, so we need to use loops to loop through the collection of worksheets and delete them.

The below code will loop through the worksheets and delete all the worksheets in the workbook.

Code:

Sub Delete_Example2() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Delete Next Ws End Sub

Горният код ще доведе до грешка, тъй като се опитва да изтрие всички листове в работната книга. Така че, за да избегнем това, трябва да запазим поне един работен лист.

Ако искаме да изтрием всички работни листове с изключение на активния лист, тогава трябва да използваме кода по-долу.

Код:

Sub Delete_Example2 () Затъмняване на Ws като работен лист за всеки Ws в ActiveWorkbook.Worksheets If ActiveSheet.Name Ws.Name Тогава Ws.Delete End If Next Ws End Sub

По същия начин, ако не искаме да изтрием конкретен работен лист, а да изтрием всички други работни листове, тогава можем да използваме кода по-долу.

Код:

Sub Delete_Example2 () Затъмняване на Ws като работен лист за всеки Ws в ActiveWorkbook.Worksheets Ако Ws.Name "Продажби 2018" Тогава 'Можете да промените името на работния лист Ws.Delete End If Next Ws End Sub

Горният код ще изтрие всички работни листове с изключение на работния лист с име „Продажби 2018“.

Интересни статии...