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 dal Sub senza eseguire ulteriori righe di codice sotto '…' Questo codice verrà ignorato '… End Sub
Esempi
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.

Ora voglio inserire solo 5 numeri di serie, e non appena il valore della variabile “k” diventa 6, voglio uscire dal sub.
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, verrà eseguita l'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 tentiamo di farlo, otterremo l'errore come Run Time Error "11": Division By Zero.

Per evitare ciò non appena riscontriamo 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 sopra, 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 il marchio come
ErrorHandler: Esci da Sub
Non appena il codice incontra un errore, spinge il codice a saltare all'etichetta e il marchio ha l'istruzione "Exit Sub" in modo che esca 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 avvisare 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.