VBA Exit Sub

Subprocedimento de saída do Excel VBA

A instrução Exit Sub sai do subprocedimento antes das linhas definidas dos códigos VBA. No entanto, para sair do subprocedimento, precisamos aplicar algum tipo de teste lógico.

Vamos construir isso em termos simples.

 Sub MacroName () '...' Algum código aqui '... Exit Sub' Saia do Sub sem executar outras linhas de código abaixo '...' Este código será ignorado '... End Sub 

Exemplos

Você pode baixar este modelo de saída Sub Excel do VBA aqui - Modelo de saída Sub Excel do VBA

Exemplo 1

Para um melhor exemplo, veja o código abaixo.

Código:

 Sub Exit_Example1 () Dim k As Long For k = 1 a 10 células (k, 1) .Value = k Next k End Sub 

O código acima irá inserir números de série de 1 a 10 nas células A1 a A10.

Agora quero inserir apenas 5 números de série e assim que o valor da variável “k” se tornar 6, quero sair do sub.

Para isso, terei que adicionar o teste lógico no excel como IF k = 6 Then Exit Sub .

Código:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 If k = 6 Then Exit Sub 'Assim que o valor k tornar-se 6, ele irá ignorar todos os códigos e sair das Células (k, 1) .Valor = k Próximo k Fim Sub 

Agora execute o código linha por linha. Pressione a tecla F8 para iniciar o processo.

A partir de agora, o valor k é zero.

Para alterar o valor de k para 1, pressione a tecla F8 mais uma vez.

Portanto, o valor k é 1, nosso código continua em execução e irá inserir 1 na célula A1. Assim, continue executando o loop até que o valor de k se torne 6.

Agora, o valor de k é 6 e a linha de código está prestes a executar nosso teste lógico para sair do subprocedimento. Se eu pressionar a tecla F8 mais uma vez, ele encerrará imediatamente todo o procedimento secundário.

Como podemos ver, destacou a palavra “Exit Sub” . Ao pressionar a tecla F8 sairá do subprocedimento sem ir para a palavra “End Sub” .

Exemplo # 2 - Em caso de erro, saia do subprocedimento

Também podemos sair do subprocedimento quando obtivermos os valores de erro. Por exemplo, considere os dados abaixo de dividir o número 1 do número 2.

Abaixo está o código para obter a divisão de dois números.

Código:

 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 

Como sabemos, não podemos dividir nenhum número por zero. Portanto, se tentarmos fazer isso, obteremos o erro como Run Time Error '11': Division By Zero.

Para evitar isso, assim que encontrarmos algum erro, mencionarei minha macro para sair do subprocedimento com efeito imediato. O código abaixo é um desses casos.

Código:

 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 

No exemplo acima, mencionei a declaração “On Error Goto ErrorHandler”. Aqui, a palavra ErrorHandler é o rótulo que atribuí. Se você puder ver na parte inferior do código, mencionei o rótulo como

ErrorHandler: Exit Sub 

Portanto, assim que o código encontrar um erro, ele enviará o código para pular para o rótulo e o rótulo terá a instrução “Exit Sub”, então sairá do subprocedimento.

Agora vou rodar o código, ele vai calcular a divisão até encontrar um erro.

Como você pode ver na célula C7, encontrou um erro como “Divisão por Zero”, por isso saiu do subprocedimento. Sem informar o usuário a saída do subprocedimento é sempre algo perigoso. Para informar o usuário sobre o erro, podemos incluir uma pequena caixa de mensagem.

Código:

 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 " Ocorreu um erro e o erro é: "& vbNewLine & Err.Description Exit Sub End Sub 

O código acima mostrará a mensagem de erro e sairá do subprocedimento. Ao executar o código, se ocorrer um erro, ele mostrará a caixa de mensagem no VBA como abaixo.

Esta é uma maneira mais confiável de sair do Sub procedimento.