VBA Usuń arkusz

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 robocze („Nazwa arkusza roboczego”). Usuń

LUB

Arkusze („Nazwa arkusza”). Usuń

Tak więc najpierw musimy określić nazwę arkusza za pomocą arkusza roboczego lub obiektu Arkusze , a później możemy użyć metody „Usuń” .

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

Możesz pobrać ten szablon VBA Usuń arkusz Excel tutaj - VBA Usuń szablon arkusza Excel

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

Załóżmy, że masz wiele arkuszy i aby usunąć konkretny arkusz, musimy wspomnieć o arkuszu po jego nazwie. 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 () Arkusze („arkusze 2017”). Usuń koniec 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 poza zakresem”.

W powyższym przypadku otrzymałem błąd „Indeks 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 zobaczyć 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”.

Uruchomienie kodu spowoduje usunięcie aktywnego arkusza, tj. „Sprzedaż 2017”.

Teraz wybiorę „Sales 2016”.

Teraz usunie aktywny arkusz, czyli „Sprzedaż 2016”.

W ten sposób możemy użyć obiektu „Active Sheet” do usunięcia arkusza.

Uwaga: Aby skorzystać z tej metody, musimy mieć absolutną pewność, co robimy z aktywnym arkuszem i który arkusz będzie aktywnym arkuszem.

Przykład 4 - Usuń więcej niż jeden arkusz roboczy

W naszych powyższych przykładach widzieliśmy, jak usunąć pojedynczy arkusz, ale co, jeśli mamy wiele arkuszy roboczych, powiedzmy, że chcemy usunąć 10 arkuszy.

Nie możemy dalej pisać 10 linii kodu, aby usunąć arkusz, więc musimy użyć pętli, aby zapętlić kolekcję arkuszy i je usunąć.

Poniższy kod przejdzie przez arkusze robocze i usunie wszystkie arkusze ze skoroszytu.

Kod:

 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 

Similarly, if we don’t want to delete specific worksheet but to delete all other worksheets then we can use below code.

Code:

 Sub Delete_Example2() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If Ws.Name  "Sales 2018" Then 'You can change the worksheet name Ws.Delete End If Next Ws End Sub 

The above code will delete all the worksheets except the worksheet named as “Sales 2018”.