In VBA, puoi uscire da un Sub o da una funzione, usando il Esci Sotto o Esci dalla funzione comandi.
1 | Esci Sotto |
1 | Esci dalla funzione |
Quando l'esecuzione del codice arriva a Esci Sotto o Esci dalla funzione, uscirà da Sub o Function e continuerà con qualsiasi altra esecuzione di codice.
Se vuoi imparare come uscire da un Sub in caso di errore, fai clic su questo link: VBA On Error Exit Sub
Se vuoi imparare come terminare l'esecuzione di un intero codice, clicca su questo link: VBA End
Esci da un sottotitolo in VBA
Vedrai nell'esempio cosa succede quando usiamo il Esci Sotto comando in un Sub. Abbiamo creato un sottotitolo ExitSub, che ha il Esci Sotto comando all'interno. il sottotitoloCallExitSub chiama questo Sub. Ecco il codice:
123456789101112131415161718 | Private Sub ExitSub()Dim i As IntegerPer i = da 1 a 10Se i = 5 AlloraEsci SottoMsgBox "Il valore di i è" & iFinisci seAvanti ioFine sottotitoloPrivate Sub CallExitSub()Chiama ExitSubMsgBox "Esci da sub"Fine sottotitolo |
Nel ExitSub, inseriamo prima il ciclo For se il valore di i è inferiore a 10:
123 | Per i = da 1 a 10Avanti io |
Successivamente controlliamo se il valore di i è uguale a 5, utilizzando il comando If. Se il valore è 5, vogliamo uscire da Sub e restituire la casella Messaggio con il valore i:
1234 | Se i = 5 AlloraEsci SottoMsgBox "Il valore di i è" & iFinisci se |
Se la condizione non è soddisfatta, la seguente istruzione aumenta i di 1 ed entra nuovamente nel ciclo For:
1 | Avanti io |
Nel CallExitSub, chiamiamo prima il Sub ExitSub:
1 | Chiama ExitSub |
Dopodiché restituiamo la casella del messaggio:
1 | MsgBox "Esci da sub" |
Se esegui il CallExitSub, chiamerà prima il ExitSub. Se esegui questo codice in modalità debug, vedrai che passerà attraverso il ciclo 5 volte. Nel 5ns iterazione, il valore della variabile i diventa 5 e il codice entra nel corpo If. Ora il sottotitolo ExitSub si esce e si ritorna al CallExitSub. La riga successiva è MsgBox “Esci da sub”:
Come puoi vedere, il ExitSub è uscito subito dopo Esci Sotto comando, quindi il MsgBox “Il valore di i è” & i non verrà mai eseguito.
Uscire da una funzione in VBA
L'uscita da una funzione in VBA è simile all'uscita da un Sub, solo il comando è Esci dalla funzione. Nell'esempio, abbiamo creato il ExitFunc che restituisce un numero intero. il sottotitolo Funzione CallExit chiama questa funzione. Ecco il codice:
1234567891011121314151617181920 | Funzione privata ExitFunc() As IntegerDim i As IntegerPer i = da 1 a 10Se i = 5 AlloraExitFunc = iEsci dalla funzioneFinisci seAvanti ioFine funzionePrivate Sub CallExitFunction()Dim intFunc As IntegerintFunc = ExitFunction()MsgBox "Il valore di intFunc è " & intFuncFine sottotitolo |
Nel ExitFunc, inseriamo prima il ciclo For se il valore di i è inferiore a 10:
123 | Per i = da 1 a 10Avanti io |
Successivamente controlliamo se il valore di i è uguale a 5, utilizzando il comando If. Se il valore è 5, assegniamo il valore di i al risultato della funzione e usciamo dalla funzione:
1234 | Se i = 5 AlloraExitFunc = iEsci dalla funzioneFinisci se |
Se la condizione non è soddisfatta, la seguente istruzione aumenta i di 1 ed entra nuovamente nel ciclo For:
1 | Avanti io |
Nel Funzione CallExit, chiamiamo prima la funzione ExitFunc: Per farlo dobbiamo dichiarare la variabile intFunc digitare intero e assegnare il risultato di ExitFunc funzione ad esso:
123 | Dim intFunc As IntegerintFunc = ExitFunction() |
Dopodiché restituiamo la casella Messaggio con il valore di intFunc:
1 | MsgBox "Il valore di intFunc è " & intFunc |
Se esegui il Funzione CallExit, chiamerà prima la funzione ExitFunc. Se esegui questo codice in modalità debug, vedrai che passerà attraverso il ciclo 5 volte. Nel 5ns iterazione, il valore della variabile i diventa 5 e il codice entra nel corpo If. Ora il valore di ExitFunc diventa i e si esce dalla funzione e si ritorna al Funzione CallExit. La riga successiva è MsgBox “Il valore di intFunc è ” & intFunc: