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 ExcelPrzykł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”.