VBA Radera ark

Excel VBA Radera ark

För att ta bort ark i VBA har vi en Ta bort kalkylmetod. För att tillämpa den här metoden först måste vi identifiera vilket ark vi tar bort genom att ringa bladets namn. Vi har två metoder för att göra detsamma först skriver vi ark1.delete direkt och andra metoden är ark (ark1) .delete.

Så syntaksen följer.

Kalkylblad ("Kalkylbladets namn"). Radera

ELLER

Sheets ("Sheet Name"). Radera

Så först måste vi ange bladnamnet med antingen kalkylblad eller arkobjekt , sedan senare kan vi använda "Ta bort" -metoden.

Hur tar jag bort Excel-ark med VBA-kod?

Du kan ladda ner den här VBA Delete Sheet Excel-mallen här - VBA Delete Sheet Excel-mall

Exempel nr 1 - Ta bort kalkylblad med dess namn

Antag att du har många ark och för att ta bort det specifika kalkylbladet måste vi nämna kalkylbladet med dess namn. Till exempel har jag tre olika ark med namnet “Försäljning 2016”, “Försäljning 2017” och “Försäljning 2018”.

Om jag vill ta bort arket som heter " Försäljning 2017 " måste jag nämna bladets namn som nedan.

Koda:

Sub Delete_Example1 () Kalkylblad ("ark 2017"). Avsluta sub

Problemet med att nämna kalkylbladets namn direkt får vi inte se IntelliSense-listan över VBA. Hur som helst nämner metoden som " Radera ".

Koda:

Sub Delete_Example1 () Kalkylblad ("ark 2017"). Ta bort slut sub

Så detta kommer att ta bort arket som heter " Försäljning 2017 ".

Fel vid borttagning av kalkylbladet: Om vi ​​försöker ta bort kalkylbladet som inte finns eller om vi nämner kalkylarkets namn felaktigt får vi vba-felet som "Subscript Out of Range".

I ovanstående fick jag felet "Subscript Out of Range" eftersom det i min arbetsbok finns inget arknamn som heter "Sales 2017".

Exempel # 2 - Ta bort kalkylblad med dess namn med variabler

Som vi har sett ovanstående exempel i det ögonblick vi hänvisar till kalkylbladets namn med hjälp av Kalkylarkobjekt får vi inte se IntelliSense-listan. För att få se IntelliSense-listan måste vi använda variabler.

Steg 1: Förklara först variabeln som kalkylblad .

Koda:

 Sub Delete_Example2 () Dim Ws As Worksheet End Sub 

Steg 2: Eftersom kalkylbladet är en objektvariabel måste vi ställa in variabeln till det specifika kalkylbladet med hjälp av ordet " SET ".

Koda:

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

Nu hänvisar variabeln "Ws" till kalkylbladet "Sales 2017".

Steg 3: Nu med variabeln " Ws " kan vi komma åt hela IntelliSense-listan i kalkylbladet.

Koda:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales 2017") Ws. Avsluta sub

Steg 4: Välj " Ta bort " -metoden från IntelliSense-listan .

Koda:

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

Som detta med hjälp av variabler kan vi komma åt IntelliSense-listan.

Exempel # 3 - Ta bort aktivt kalkylblad

Aktivt ark är inget annat än vilket kalkylblad som är aktivt eller valt för tillfället. För denna metod behöver vi inte nämna kalkylbladets namn. Titta till exempel på nedanstående VBA-kod.

ActiveSheet.Delete

Just nu är det aktiva bladet ”Försäljning 2017”.

Om jag kör koden kommer det att ta bort det aktiva arket dvs “Försäljning 2017”.

Nu väljer jag “Försäljning 2016”.

Nu tar det bort det aktiva arket, dvs.

Så här kan vi använda objektet "Aktivt ark" för att ta bort kalkylbladet.

Obs! För att använda den här metoden måste vi vara helt säkra på vad vi gör med Active Sheet och vilket ark som kommer att bli ett aktivt ark.

Exempel # 4 - Ta bort mer än ett kalkylblad

I våra ovanstående exempel har vi sett hur man tar bort ett enda ark, men tänk om vi har flera kalkylblad, låt oss säga att vi vill ta bort 10 kalkylblad.

Vi kan inte fortsätta skriva 10 rader kod för att ta bort kalkylbladet, så vi måste använda loopar för att slinga igenom samlingen av kalkylblad och ta bort dem.

Nedanstående kod kommer att slinga igenom kalkylbladet och ta bort alla kalkylblad i arbetsboken.

Koda:

 Sub Delete_Example2 () Dim Ws som kalkylblad för varje Ws i ActiveWorkbook.Worksheets Ws.Radera nästa Ws End Sub 

Ovanstående kod ger ett fel eftersom den försöker ta bort alla ark i arbetsboken. Så för att undvika detta måste vi behålla minst ett kalkylblad.

Om vi ​​vill ta bort alla kalkylblad utom det aktiva arket måste vi använda koden nedan.

Koda:

 Sub Delete_Example2 () Dim Ws som kalkylblad för varje Ws i ActiveWorkbook.Worksheets Om ActiveSheet.Name Ws.Name Då Ws.Rader Slut om nästa 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”.