No VBA, você pode sair de uma sub ou função, usando o Sair do Sub ou Função de saída comandos.
1 | Sair do Sub |
1 | Função de saída |
Quando a execução do código chega a Sair do Sub ou Função de saída, ele sairá de uma Sub ou Função e continuará com qualquer outra execução de código.
Se você quiser aprender como sair de um Sub em caso de erro, clique neste link: VBA em erro Exit Sub
Se você quiser aprender como encerrar a execução de um código inteiro, clique neste link: Fim do VBA
Sair de um Sub em VBA
Você verá no exemplo o que acontece quando usamos o Sair do Sub comando em um Sub. Nós criamos um Sub ExitSub, que tem o Sair do Sub comando dentro. The SubCallExitSub chama isso de Sub. Aqui está o código:
123456789101112131415161718 | Sub ExitSub Privado ()Dim i As IntegerPara i = 1 a 10Se i = 5 entãoSair do SubMsgBox "O valor de i é" & iFim seProximo euEnd SubPrivate Sub CallExitSub ()Chamar ExitSubMsgBox "Exit Sub"End Sub |
No ExitSub, primeiro entramos no Loop For se o valor de i for menor que 10:
123 | Para i = 1 a 10Proximo eu |
Depois disso, verificamos se o valor de i é igual a 5, usando o comando If. Se o valor for 5, queremos sair do Sub e retornar a caixa de mensagem com o valor de i:
1234 | Se i = 5 entãoSair do SubMsgBox "O valor de i é" & iFim se |
Se a condição não for atendida, a seguinte instrução aumenta i em 1 e entra no loop For novamente:
1 | Proximo eu |
No CallExitSub, primeiro chamamos o Sub ExitSub:
1 | Chamar ExitSub |
Depois disso, retornamos a caixa de mensagem:
1 | MsgBox "Exit Sub" |
Se você executar o CallExitSub, ele vai primeiro chamar o ExitSub. Se você executar este código no modo de depuração, verá que ele passará pelo loop 5 vezes. No 5º iteração, o valor da variável i torna-se 5 e o código entra no corpo If. Agora o Sub ExitSub sai e retorna ao CallExitSub. A próxima linha é MsgBox “Exit Sub”:
Como você pode ver, o ExitSub sai logo depois Sair do Sub comando, então o MsgBox “O valor de i é” & i nunca será executado.
Sair de uma função em VBA
Sair de uma função no VBA é semelhante a sair de um Sub, apenas o comando é Função de saída. No exemplo, criamos o ExitFunc que retorna um inteiro. The Sub CallExitFunction chama esta função. Aqui está o código:
1234567891011121314151617181920 | Função privada ExitFunc () como inteiroDim i As IntegerPara i = 1 a 10Se i = 5 entãoExitFunc = iFunção de saídaFim seProximo euFunção FinalPrivate Sub CallExitFunction ()Dim intFunc As IntegerintFunc = ExitFunction ()MsgBox "O valor de intFunc é" & intFuncEnd Sub |
No ExitFunc, primeiro entramos no Loop For se o valor de i for menor que 10:
123 | Para i = 1 a 10Proximo eu |
Depois disso, verificamos se o valor de i é igual a 5, usando o comando If. Se o valor for 5, atribuímos o valor de i ao resultado da função e saímos da função:
1234 | Se i = 5 entãoExitFunc = iFunção de saídaFim se |
Se a condição não for atendida, a seguinte instrução aumenta i em 1 e entra no loop For novamente:
1 | Proximo eu |
No CallExitFunction, primeiro chamamos a função ExitFunc: Para fazer isso, temos que declarar a variável intFunc digite inteiro e atribua o resultado do ExitFunc função para ele:
123 | Dim intFunc As IntegerintFunc = ExitFunction () |
Depois disso, retornamos a caixa de mensagem com o valor de intFunc:
1 | MsgBox "O valor de intFunc é" & intFunc |
Se você executar o CallExitFunction, ele primeiro chamará a função ExitFunc. Se você executar este código no modo de depuração, verá que ele passará pelo loop 5 vezes. No 5º iteração, o valor da variável i torna-se 5 e o código entra no corpo If. Agora, o valor do ExitFunc torna-se i e a função é encerrada e retornada ao CallExitFunction. A próxima linha é MsgBox “O valor de intFunc é” & intFunc: