VBA – Sair da Subfunção ou Função
No VBA, você pode sair de uma subfunção ou função usando os comando Exit Sub ou Exit Function.
Exit Sub
Exit Function
Quando a execução do código chegar a Exit Sub ou Exit Function, ele sairá de uma Sub ou Função e continuará com qualquer outra execução de código.
Se você quiser saber como sair de uma Sub em caso de erro, clique neste link: VBA On Error Exit Sub
Se você quiser saber como encerrar a execução de um código inteiro, clique neste link: VBA End
Sair de uma Sub no VBA
Você verá no exemplo o que acontece quando usamos o comando Exit Sub em uma Sub. Criamos uma Sub SairSub, que tem o comando Exit Sub em seu interior. A Sub ChamarSairSub chama essa Sub. Aqui está o código:
Private Sub SairSub()
Dim i As Integer
For i = 1 To 10
If i = 5 Then
Exit Sub
MsgBox "O valor de i é " & i
End If
Next i
End Sub
Private Sub ChamarSairSub()
Call SairSub
MsgBox "Sair Sub"
End Sub
No SairSub, primeiro entramos no Loop For se o valor de i for menor que 10:
For i = 1 To 10
Next i
Depois disso, verificamos se o valor de i é igual a 5, usando o comando If. Se o valor for 5, queremos sair da Sub e retornar a caixa de mensagem com o valor de i:
If i = 5 Then
Exit Sub
MsgBox "O valor de i é " & i
End If
Se a condição não for atendida, a instrução a seguir aumenta i em 1 e entra no loop For novamente:
Next i
No ChamarSairSub, primeiro chamamos o Sub SairSub:
Call SairSub
Depois disso, retornamos a caixa de mensagem:
MsgBox "Sair Sub"
Se você executar o ChamarSairSub, ele chamará primeiro o SairSub. Se você executar esse código no modo de depuração, verá que ele percorrerá o loop 5 vezes. Na quinta iteração, o valor da variável i se torna 5 e o código entra no corpo If. Agora a Sub SairSub é encerrada e retorna para ChamarSairSub. A próxima linha é MsgBox “Sair Sub”:
Como você pode ver, o SairSub é encerrado logo após o comando Exit Sub , de modo que a MsgBox “O valor de i é ” & i nunca será executada.
Sair de uma Função no VBA
Sair de uma função no VBA é semelhante a sair de uma Sub, só que o comando é Exit Function. No exemplo, criamos a SairFunc que retorna um número inteiro. A Sub ChamarSairFuncao chama essa função. Aqui está o código:
Private Function SairFunc() As Integer
Dim i As Integer
For i = 1 To 10
If i = 5 Then
SairFunc = i
Exit Function
End If
Next i
End Function
Private Sub ChamarSairFuncao()
Dim intFunc As Integer
intFunc = SairFunc()
MsgBox "O valor de intFunc é " & intFunc
End Sub
Na SairFunc, primeiro entramos no Loop For se o valor de i for menor que 10:
For i = 1 To 10
Next i
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:
If i = 5 Then
SairFunc = i
Exit Function
End If
Se a condição não for atendida, a instrução a seguir aumenta i em 1 e entra no loop For novamente:
Next i
Em ChamarSairFuncao, primeiro chamamos a função SairFunc: Para fazer isso, precisamos declarar a variável intFunc do tipo inteiro e atribuir o resultado da função SairFunc a ela:
Dim intFunc As Integer
intFunc = SairFunc()
Depois disso, retornamos a caixa de mensagem com o valor de intFunc:
MsgBox "O valor de intFunc é " & intFunc
Se você executar a função ChamarSairFuncao, ela chamará primeiro a função SairFunc. Se você executar esse código no modo de depuração, verá que ele percorrerá o loop 5 vezes. Na quinta iteração, o valor da variável i se torna 5 e o código entra no corpo If. Agora o valor de SairFunc se torna i e a função é encerrada e retornada para ChamarSairFuncao. A próxima linha é MsgBox “O valor de intFunc é ” & intFunc: