VBA ištrinti lapą - Kaip ištrinti darbalapį naudojant VBA kodą?

„Excel VBA“ ištrinti lapą

Norėdami ištrinti lapą VBA, mes ištriname darbalapį. Norėdami pirmiausia pritaikyti šį metodą, turime nustatyti, kurį lapą ištriname, paskambinę lapo pavadinimu. Mes turime du būdus daryti tą patį, pirmiausia mes tiesiogiai parašome sheet1.delete, o antrasis metodas yra lapai (sheet1) .delete.

Taigi seka sintaksė.

Darbalapiai („Darbalapio pavadinimas“). Ištrinti

ARBA

Lakštai („Lapo pavadinimas“). Ištrinti

Taigi, pirmiausia turime nurodyti lapo pavadinimą naudodami „ Worksheet“ arba „ Sheets Object“, tada vėliau galime naudoti „Delete“ metodą.

Kaip ištrinti „Excel“ skaičiuokles naudojant VBA kodą?

1 pavyzdys - ištrinkite darbalapį naudodami jo pavadinimą

Tarkime, kad turite daug lapų ir norėdami ištrinti konkretų darbalapį, turime paminėti darbalapį pavadinimu. Pavyzdžiui, turiu 3 skirtingus lapus, pavadintus „Pardavimai 2016“, „Pardavimai 2017“ ir „Pardavimai 2018“.

Jei noriu ištrinti lapą pavadinimu „ Pardavimai 2017 “, turiu paminėti lapo pavadinimą, kaip nurodyta toliau.

Kodas:

Sub Delete_Example1 () darbalapiai („2017 m. Lapai“). Pabaigos sub

Problemos, susijusios su darbalapio pavadinimo paminėjimu tiesiogiai, nematome VBA „IntelliSense“ sąrašo. Bet kokiu atveju paminėkite metodą kaip „ Ištrinti“.

Kodas:

Sub Delete_Example1 () darbalapiai („2017 m. Lakštai“). Ištrinti End Sub

Taigi tai ištrins lapą pavadinimu „ Pardavimai 2017 “.

Ištrinant darbalapį įvyko klaida: jei bandysime ištrinti neegzistuojantį darbalapį arba neteisingai paminėsime darbalapio pavadinimą, gausime VBA klaidą kaip „Subscript Out Range.“

Iš to, kas išdėstyta pirmiau, gavau klaidą „Subscript Out of Range“, nes mano darbaknygėje nėra lapo pavadinimo „Sales 2017“.

2 pavyzdys - ištrinkite darbalapį pagal jo pavadinimą su kintamaisiais

Kaip matėme aukščiau pateiktame pavyzdyje, tuo metu, kai nurodome darbalapio pavadinimą naudodami objektą „Darbalapiai“, nematome „IntelliSense“ sąrašo. Norėdami pamatyti „IntelliSense“ sąrašą, turime naudoti kintamuosius.

1 žingsnis: Pirmiausia paskelbkite kintamąjį kaip darbalapį .

Kodas:

Sub Delete_Pavyzdys2 () Dim Ws kaip darbalapio pabaigos sub

2 žingsnis: Kadangi darbalapis yra objekto kintamasis, mes turime nustatyti kintamąjį pagal konkretų darbalapį, naudodami žodį „ SET “.

Kodas:

Sub Delete_Pavyzdys2 () Dim Ws kaip darbalapio rinkinys Ws = Worksheet ("Pardavimai 2017") Pabaiga Sub

Dabar kintamasis „Ws“ nurodo darbalapį pavadinimu „Pardavimai 2017“.

3 žingsnis: Dabar, naudodami kintamąjį „ Ws “, galime pasiekti visą darbalapio „IntelliSense“ sąrašą.

Kodas:

Sub Delete_Pavyzdys2 () Dim Ws kaip darbalapio rinkinys Ws = Worksheet ("Sales 2017") Ws. Pabaigos sub

4 žingsnis: „IntelliSense“ sąraše pasirinkite „ Ištrinti “ metodą.

Kodas:

Sub Delete_Pavyzdys2 () Dim Ws kaip darbalapio rinkinys Ws = darbalapiai ("Sales 2017") Ws. Ištrinti pabaigos antrinę dalį

Panašiai naudodami kintamuosius, galime pasiekti „IntelliSense“ sąrašą.

3 pavyzdys - ištrinkite aktyvų darbalapį

Aktyvus lapas yra ne kas kitas, o tuo metu aktyvus ar pasirinktas darbalapis. Taikant šį metodą, nereikia paminėti darbalapio pavadinimo. Pavyzdžiui, pažvelkite į žemiau esantį VBA kodą.

„ActiveSheet“. Ištrinti

Šiuo metu aktyvus lapas yra „Pardavimai 2017“.

Jei paleisiu kodą, jis ištrins aktyvų lapą, ty „Pardavimai 2017“.

Dabar pasirenku „Pardavimai 2016“.

Dabar jis ištrins aktyvų lapą, ty „Pardavimai 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

Minėtas kodas sukels klaidą, nes jis bando ištrinti visus darbaknygės lapus. Taigi, kad to išvengtume, turime pasilikti bent vieną darbalapį.

Jei norime ištrinti visus darbalapius, išskyrus aktyvųjį lapą, turime naudoti žemiau pateiktą kodą.

Kodas:

Sub Delete_Pavyzdys2 () Dim Ws kaip kiekvieno Ws darbalapį „ActiveWorkbook“. Darbo lapai, jei „ActiveSheet“. Pavadinimas Ws.Name Tada Ws. Ištrinti pabaigą, jei kitas Ws pabaiga Sub

Panašiai, jei mes nenorime ištrinti konkretaus darbalapio, bet ištrinti visus kitus darbalapius, galime naudoti žemiau pateiktą kodą.

Kodas:

Panaikinti_pavyzdys2 () „Dim Ws“, kaip kiekvieno „ActiveWorkbook“ darbo lapą. Darbo lapai, jei „Ws.name“ Pardavimai 2018 “, tada galite pakeisti darbalapio pavadinimą Ws. Ištrinti pabaigą, jei kitas Ws pabaiga

Aukščiau pateiktas kodas ištrins visus darbalapius, išskyrus darbalapį pavadinimu „Pardavimai 2018“.

Įdomios straipsniai...