VBA Radera ark - Hur tar jag bort kalkylblad med VBA-kod?

Innehållsförteckning

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 Sheets Object, sedan senare kan vi använda metoden "Radera" .

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

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 med namnet " 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 () Arbetsblad ("ark 2017"). Ta bort End 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 kalkylbladets namn felaktigt, får vi VBA-felet som "Subscript Out of Range."

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

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

Som vi har sett i exemplet ovan får vi inte se listan IntelliSense när vi hänvisar till kalkylbladets namn med hjälp av kalkylarkobjektet. 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 " Radera " -metoden i 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. Ta bort

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 raderas det aktiva arket, dvs. ”Försäljning 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

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

På samma sätt, om vi inte vill ta bort ett specifikt kalkylblad utan att ta bort alla andra kalkylblad, kan vi använda koden nedan.

Koda:

Sub Delete_Example2 () Dim Ws som kalkylblad för varje Ws i ActiveWorkbook.Worksheets Om Ws.Name "Försäljning 2018" Då 'Du kan ändra kalkylbladets namn Ws.Radera Slut om nästa Ws End Sub

Ovanstående kod raderar alla kalkylblad utom kalkylbladet ”Försäljning 2018”.

Intressanta artiklar...