VBA Exit Sub

Procedura secondaria Exit VBA di Excel

L' istruzione Exit Sub esce dalla sottoprocedura prima delle righe definite dei codici VBA. Tuttavia, per uscire dalla sottoprocedura dobbiamo applicare una sorta di test logico.

Costruiamolo in termini semplici.

 Sub MacroName () '...' Some code here '... Exit Sub' Esci da Sub senza eseguire ulteriori righe di codice sotto '...' Questo codice verrà ignorato '... End Sub 

Esempi

Puoi scaricare questo modello VBA Exit Sub Excel qui - VBA Exit Sub Excel Template

Esempio 1

Per un esempio migliore, guarda il codice seguente.

Codice:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 Cells (k, 1) .Value = k Next k End Sub 

Il codice sopra inserirà i numeri di serie da 1 a 10 nelle celle da A1 a A10.

Adesso voglio inserire solo 5 numeri seriali e appena il valore della variabile “k” diventa 6 voglio uscire dal sub.

Per questo, dovrò aggiungere il test logico in excel come IF k = 6 Then Exit Sub .

Codice:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 If k = 6 Then Exit Sub 'Non appena il valore k diventa 6 ignorerà tutti i codici e uscirà da Cells (k, 1) .Value = k Next k End Sub 

Ora esegui il codice riga per riga. Premere il tasto F8 per avviare il procedimento.

A partire da ora, il valore k è zero.

Per modificare il valore k in 1, premere ancora una volta il tasto F8.

Quindi il valore k è 1, il nostro codice continua a funzionare e inserirà 1 nella cella A1. In questo modo, continua a eseguire il ciclo finché il valore di k diventa 6.

Ora il valore di k è 6 e la riga di codice sta per eseguire il nostro test logico per uscire dalla sottoprocedura. Se premo ancora una volta il tasto F8 uscirà direttamente dall'intera procedura secondaria.

Come possiamo vedere ha evidenziato la parola “Exit Sub” . Premendo il tasto F8 uscirà dalla sottoprocedura senza passare alla parola “End Sub” .

Esempio n. 2 - In caso di errore, uscire dalla sottoprocedura

Possiamo anche uscire dalla sottoprocedura quando otteniamo i valori di errore. Ad esempio, considera i dati seguenti per la divisione del numero 1 dal numero 2.

Di seguito è riportato il codice per ottenere la divisione di due numeri.

Codice:

 Sub Exit_Example2 () Dim k As Long For k = 2 To 9 Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k End Sub 

Come sappiamo non possiamo dividere nessun numero per zero. Quindi, se proviamo a farlo, otterremo l'errore come Run Time Error "11": Division By Zero.

Per evitare ciò non appena riscontreremo un errore, menzionerò la mia macro per uscire dalla sottoprocedura con effetto immediato. Il codice seguente è uno di questi casi.

Codice:

 Sub Exit_Example2 () Dim k As Long For k = 2 To 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: Exit Sub End Sub 

Nell'esempio precedente, ho menzionato l'istruzione "On Error Goto ErrorHandler". Qui la parola ErrorHandler è l'etichetta che ho assegnato. Se puoi vedere in fondo al codice ho menzionato l'etichetta come

ErrorHandler: Esci da Sub 

Quindi, non appena il codice incontra un errore, spingerà il codice a saltare all'etichetta e l'etichetta avrà l'istruzione "Exit Sub", quindi uscirà dalla sottoprocedura.

Ora eseguirò il codice, calcolerà la divisione finché non trova un errore.

Come puoi vedere nella cella C7 ha riscontrato un errore come "Divisione per Zero" quindi è uscito dalla sottoprocedura. Senza informare l'utente che esce dalla sottoprocedura è sempre una cosa pericolosa. Per informare l'utente dell'errore possiamo includere una piccola finestra di messaggio.

Codice:

 Sub Exit_Example2 () Dim k As Long For k = 2 To 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: MsgBox " Si è verificato un errore e l'errore è: "& vbNewLine & Err.Description Exit Sub End Sub 

Il codice precedente mostrerà il messaggio di errore quindi uscirà dalla sottoprocedura. Durante l'esecuzione del codice, se si verifica un errore, verrà visualizzata la finestra di messaggio in VBA come di seguito.

Questo è un modo più affidabile per uscire dalla procedura secondaria.