Foaie de ștergere VBA - Cum se șterge foaia de lucru folosind codul VBA?

Foaie de ștergere Excel VBA

Pentru a șterge foaia în VBA avem o metodă de ștergere a foii de lucru. Pentru a aplica mai întâi această metodă, trebuie să identificăm foaia pe care o ștergem apelând numele foii. Avem două metode pentru a face același lucru, mai întâi scriem direct sheet1.delete și a doua metodă este foi (sheet1) .delete.

Deci urmează sintaxa.

Foi de lucru („Nume foaie de lucru”). Ștergeți

SAU

Foi de calcul („Numele foii”). Ștergeți

Deci, mai întâi, trebuie să specificăm numele foii folosind fie Foaia de lucru, fie Obiectul Foi , apoi mai târziu, putem folosi metoda „Șterge” .

Cum să ștergeți foi Excel folosind codul VBA?

Exemplul # 1 - Ștergeți foaia de lucru folosind numele acesteia

Să presupunem că aveți multe foi și, pentru a șterge foaia de lucru, trebuie să menționăm foaia de lucru după numele acesteia. De exemplu, am 3 foi diferite numite „Vânzări 2016”, „Vânzări 2017” și „Vânzări 2018”.

Dacă vreau să șterg foaia numită „ Vânzări 2017, atunci trebuie să menționez numele foii ca în cele de mai jos.

Cod:

Sub Delete_Example1 () Foi de lucru („foi 2017”). Sfârșitul Sub

Problema cu menționarea directă a numelui foii de lucru nu vom vedea lista IntelliSense a VBA. Oricum, menționează metoda ca „ Șterge”.

Cod:

Sub Delete_Example1 () Foi de lucru („foi 2017”). Ștergeți End Sub

Prin urmare, acest lucru va șterge foaia numită „ Vânzări 2017 “.

Eroare la ștergerea foii de lucru: dacă încercăm să ștergem foaia de lucru care nu există sau dacă menționăm greșit numele foii de lucru, atunci vom primi eroarea VBA ca „Indice în afara intervalului”.

În cele de mai sus, am primit eroarea „Subscript Out of Range” deoarece, în registrul meu de lucru, nu există un nume de foaie numit „Vânzări 2017”.

Exemplul # 2 - Ștergeți foaia de lucru după numele său cu variabile

Așa cum am văzut în exemplul de mai sus, în momentul în care ne referim la numele foii de lucru utilizând obiectul Worksheets, nu vom vedea lista IntelliSense. Pentru a vedea lista IntelliSense, trebuie să folosim variabile.

Pasul 1: Mai întâi, declarați variabila ca foaie de lucru .

Cod:

Sub Delete_Example2 () Dim Ws Ca foaie de lucru End Sub

Pasul 2: Deoarece foaia de lucru este o variabilă obiect, trebuie să setăm variabila la foaia de lucru specifică folosind cuvântul „ SET ”.

Cod:

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

Acum, variabila „Ws” se referă la foaia de lucru numită „Vânzări 2017”.

Pasul 3: Acum, folosind variabila „ Ws, putem accesa toată lista IntelliSense a foii de lucru.

Cod:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales 2017") Ws. Sfârșitul Sub

Pasul 4: Din lista IntelliSense, selectați metoda „ Ștergeți ”.

Cod:

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

Astfel, folosind variabile, putem accesa lista IntelliSense.

Exemplul # 3 - Ștergeți foaia de lucru activă

Foaia activă nu este altceva decât foaia de lucru activă sau selectată în acest moment. Pentru această metodă, nu este necesar să menționăm numele foii de lucru. De exemplu, uitați-vă la codul VBA de mai jos.

ActiveSheet.Elete

În acest moment, foaia activă este „Vânzări 2017”.

Dacă rulez codul, acesta va șterge foaia activă, adică „Vânzări 2017”.

Acum voi selecta „Vânzări 2016”.

Acum va șterge foaia activă, adică „Vânzări 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

Codul de mai sus va genera o eroare deoarece încearcă să șteargă toate foile din registrul de lucru. Deci, pentru a evita acest lucru, trebuie să păstrăm cel puțin o foaie de lucru.

Dacă dorim să ștergem toate foile de lucru, cu excepția foii active, atunci trebuie să folosim codul de mai jos.

Cod:

Sub Ștergere_Exemplu2 () Dim Ws ca foaie de lucru pentru fiecare Ws din ActiveWorkbook. Foi de lucru dacă ActiveSheet.Name Ws.Name, apoi Ws. Ștergeți sfârșitul Dacă următorul Ws se termină Sub

În mod similar, dacă nu dorim să ștergem o anumită foaie de lucru, ci să ștergem toate celelalte foi de lucru, atunci putem folosi codul de mai jos.

Cod:

Sub Ștergere_Exemplu2 () Dim Ws ca foaie de lucru pentru fiecare W din ActiveWorkbook.Foaie de lucru Dacă Ws.Name "Vânzări 2018" Atunci 'Puteți schimba numele foii de lucru Ws. Ștergeți Închideți dacă următorul

Codul de mai sus va șterge toate foile de lucru, cu excepția foii de lucru numită „Vânzări 2018”.

Articole interesante...