VBA Elimina foglio

Excel VBA Elimina foglio

Per eliminare il foglio in VBA utilizziamo un metodo Elimina foglio di lavoro. Per applicare questo metodo prima dobbiamo identificare quale foglio stiamo eliminando chiamando il nome del foglio. Abbiamo due metodi per fare lo stesso: prima scriviamo direttamente sheet1.delete e il secondo metodo è sheet (sheet1) .delete.

Quindi segue la sintassi.

Fogli di lavoro ("Nome foglio di lavoro"). Elimina

O

Fogli ("Nome foglio"). Elimina

Quindi, per prima cosa, dobbiamo specificare il nome del foglio utilizzando il foglio di lavoro o l' oggetto fogli , quindi in seguito possiamo utilizzare il metodo "Elimina" .

Come eliminare i fogli Excel utilizzando il codice VBA?

È possibile scaricare questo modello Excel di foglio di eliminazione VBA qui - Modello Excel di foglio di eliminazione VBA

Esempio n. 1: eliminare il foglio di lavoro utilizzando il suo nome

Supponiamo di avere molti fogli e per eliminare il particolare foglio di lavoro dobbiamo menzionare il foglio di lavoro con il suo nome. Ad esempio, ho 3 fogli diversi denominati "Vendite 2016", "Vendite 2017" e "Vendite 2018".

Se voglio eliminare il foglio denominato " Vendite 2017 ", devo menzionare il nome del foglio come di seguito.

Codice:

Sub Delete_Example1 () Worksheets ("sheet 2017"). End Sub

Il problema con la menzione diretta del nome del foglio di lavoro non è possibile visualizzare l'elenco IntelliSense di VBA. Indica comunque il metodo come " Elimina ".

Codice:

Sub Delete_Example1 () Worksheets ("sheet 2017"). Elimina End Sub

Quindi questo cancellerà il foglio denominato " Vendite 2017 ".

Errore durante l'eliminazione del foglio di lavoro: se proviamo a eliminare il foglio di lavoro che non esiste o se menzioniamo il nome del foglio di lavoro in modo errato, otterremo l'errore vba come "Indice fuori intervallo".

In quanto sopra, ho ricevuto l'errore "Indice fuori intervallo" perché nella mia cartella di lavoro non c'è il nome del foglio chiamato "Vendite 2017".

Esempio # 2: eliminare il foglio di lavoro in base al nome con variabili

Come abbiamo visto nell'esempio precedente nel momento in cui facciamo riferimento al nome del foglio di lavoro utilizzando l'oggetto Fogli di lavoro, non possiamo vedere l'elenco IntelliSense. Per visualizzare l'elenco di IntelliSense dobbiamo utilizzare le variabili.

Passaggio 1: prima dichiara la variabile come foglio di lavoro .

Codice:

 Sub Delete_Example2 () Dim Ws As Worksheet End Sub 

Passaggio 2: poiché il foglio di lavoro è una variabile oggetto, è necessario impostare la variabile sul foglio di lavoro specifico utilizzando la parola " SET ".

Codice:

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

Ora la variabile "Ws" si riferisce al foglio di lavoro denominato "Vendite 2017".

Passaggio 3: ora utilizzando la variabile " Ws " possiamo accedere a tutto l'elenco IntelliSense del foglio di lavoro.

Codice:

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

Passaggio 4: dall'elenco IntelliSense selezionare il metodo " Elimina ".

Codice:

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

In questo modo, utilizzando le variabili, possiamo accedere all'elenco IntelliSense.

Esempio n. 3: eliminare il foglio di lavoro attivo

Foglio attivo non è altro che qualsiasi foglio di lavoro attivo o selezionato al momento. Per questo metodo, non è necessario menzionare il nome del foglio di lavoro. Ad esempio, guarda il codice VBA sottostante.

ActiveSheet.Delete

In questo momento il foglio attivo è "Saldi 2017".

Se eseguo il codice cancellerà il foglio attivo cioè "Vendite 2017".

Ora selezionerò "Saldi 2016".

Ora cancellerà il foglio attivo, ovvero "Saldi 2016".

In questo modo, possiamo utilizzare l'oggetto "Foglio attivo" per eliminare il foglio di lavoro.

Nota: per utilizzare questo metodo dobbiamo essere assolutamente sicuri di cosa stiamo facendo con il foglio attivo e quale foglio sarà un foglio attivo.

Esempio n. 4: eliminare più di un foglio di lavoro

Nei nostri esempi precedenti, abbiamo visto come eliminare un singolo foglio, ma cosa succede se abbiamo più fogli di lavoro diciamo che vogliamo eliminare 10 fogli di lavoro.

Non possiamo continuare a scrivere 10 righe di codice per eliminare il foglio di lavoro, quindi dobbiamo utilizzare i cicli per scorrere la raccolta di fogli di lavoro ed eliminarli.

Il codice seguente scorrerà i fogli di lavoro ed eliminerà tutti i fogli di lavoro nella cartella di lavoro.

Codice:

 Sub Delete_Example2 () Dim Ws come foglio di lavoro per ogni Ws in ActiveWorkbook.Worksheets Ws.Delete Next Ws End Sub 

Il codice precedente genererà un errore perché tenta di eliminare tutti i fogli nella cartella di lavoro. Quindi, per evitare ciò, dobbiamo conservare almeno un foglio di lavoro.

Se vogliamo eliminare tutti i fogli di lavoro tranne il foglio attivo, dobbiamo utilizzare il codice seguente.

Codice:

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