VBA Usuń arkusz - Jak usunąć arkusz roboczy za pomocą kodu VBA?

Arkusz usuwania Excel VBA

Aby usunąć arkusz w VBA, używamy metody Usuń arkusz roboczy. Aby zastosować tę metodę, najpierw musimy zidentyfikować, który arkusz usuwamy, wywołując nazwę arkusza. Mamy dwie metody, aby zrobić to samo, najpierw bezpośrednio piszemy arkusz1.delete, a drugą jest arkusz (arkusz1) .delete.

Tak więc składnia jest następująca.

Arkusze („Nazwa arkusza roboczego”). Usuń

LUB

Arkusze („Nazwa arkusza”). Usuń

Tak więc najpierw musimy określić nazwę arkusza za pomocą arkusza roboczego lub obiektu Arkuszy , a następnie możemy użyć metody „Usuń” .

Jak usunąć arkusze Excela za pomocą kodu VBA?

Przykład 1 - Usuń arkusz roboczy, używając jego nazwy

Załóżmy, że masz wiele arkuszy i aby usunąć dany arkusz, musimy wspomnieć o arkuszu z jego nazwy. Na przykład mam 3 różne arkusze o nazwach „Sprzedaż 2016”, „Sprzedaż 2017” i „Sprzedaż 2018”.

Jeśli chcę usunąć arkusz o nazwie „ Sprzedaż 2017 ”, muszę podać nazwę arkusza, jak poniżej.

Kod:

Sub Delete_Example1 () Arkusze („arkusze 2017”). Napis końcowy

Problem z bezpośrednim wymienieniem nazwy arkusza roboczego nie powoduje wyświetlenia listy IntelliSense dla języka VBA. W każdym razie wspomnij o metodzie jako „ Usuń”.

Kod:

Sub Delete_Example1 () Worksheets („arkusze 2017”). Delete End Sub

Spowoduje to więc usunięcie arkusza o nazwie „ Sprzedaż 2017 ”.

Błąd podczas usuwania arkusza roboczego: Jeśli spróbujemy usunąć arkusz, który nie istnieje lub jeśli nieprawidłowo podamy nazwę arkusza, otrzymamy błąd VBA jako „Indeks dolny poza zakresem”.

W powyższym przypadku wystąpił błąd „Indeks dolny poza zakresem”, ponieważ w moim skoroszycie nie ma nazwy arkusza o nazwie „Sprzedaż 2017”.

Przykład # 2 - Usuń arkusz roboczy według jego nazwy ze zmiennymi

Jak widzieliśmy w powyższym przykładzie, w momencie, gdy odwołujemy się do nazwy arkusza za pomocą obiektu Worksheets, nie widzimy listy IntelliSense. Aby wyświetlić listę IntelliSense, musimy użyć zmiennych.

Krok 1: Najpierw zadeklaruj zmienną jako arkusz roboczy .

Kod:

Sub Delete_Example2 () Dim Ws As Worksheet End Sub

Krok 2: Ponieważ arkusz roboczy jest zmienną obiektową, musimy ustawić zmienną na określony arkusz za pomocą słowa „ SET ”.

Kod:

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

Teraz zmienna „Ws” odnosi się do arkusza o nazwie „Sprzedaż 2017”.

Krok 3: Teraz, używając zmiennej „ Ws ”, możemy uzyskać dostęp do całej listy IntelliSense arkusza.

Kod:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets („Sales 2017”) Ws. Napis końcowy

Krok 4: Z listy IntelliSense wybierz metodę „ Usuń ”.

Kod:

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

Podobnie jak w przypadku zmiennych, możemy uzyskać dostęp do listy IntelliSense.

Przykład # 3 - Usuń aktywny arkusz

Aktywny arkusz to nic innego jak dowolny arkusz roboczy aktywny lub wybrany w danym momencie. W przypadku tej metody nie musimy wymieniać nazwy arkusza. Na przykład spójrz na poniższy kod VBA.

ActiveSheet.Delete

W tej chwili aktywnym arkuszem jest „Sprzedaż 2017”.

Jeśli uruchomię kod, usunie on aktywny arkusz, tj. „Sales 2017”.

Teraz wybiorę „Sales 2016”.

Teraz usunie aktywny arkusz, tj. „Sprzedaż 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

Powyższy kod spowoduje zgłoszenie błędu, ponieważ próbuje usunąć wszystkie arkusze ze skoroszytu. Aby tego uniknąć, musimy zachować co najmniej jeden arkusz roboczy.

Jeśli chcemy usunąć wszystkie arkusze oprócz aktywnego arkusza, musimy użyć poniższego kodu.

Kod:

Sub Delete_Example2 () Dim Ws As Worksheet For each Ws in ActiveWorkbook.Worksheets If ActiveSheet.Name Ws.Name Then Ws.Delete End If Next Ws End Sub

Podobnie, jeśli nie chcemy usuwać konkretnego arkusza, ale usunąć wszystkie inne arkusze, możemy użyć poniższego kodu.

Kod:

Sub Delete_Example2 () Dim Ws As Worksheet For each Ws In ActiveWorkbook.Worksheets If Ws.Name "Sales 2018" Then 'Możesz zmienić nazwę arkusza Ws.Delete End If Next Ws End Sub

Powyższy kod usunie wszystkie arkusze oprócz arkusza o nazwie „Sprzedaż 2018”.

Interesujące artykuły...