VBA Exit Sub - Saia do subprocedimento VBA se as condições não forem atendidas

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

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.

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, executará o procedimento secundário inteiro apenas.

Como podemos ver, ele destacou a palavra “Exit Sub”. Ao pressionar a tecla F8, ele 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ê pode ver no final do código, mencionei a marca como

ErrorHandler: Exit Sub

Assim que o código encontrar um erro, ele empurrará o código para ir para o rótulo e a marca terá a instrução “Exit Sub” para que saia do subprocedimento.

Agora irei executar o código; ele irá calcular a divisão até encontrar um erro.

Como você pode ver na célula C7, ele encontrou um erro como “Divisão por Zero”, então ele saiu do subprocedimento. Sem informar o usuário a saída do subprocedimento é sempre algo perigoso. Para notificar 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.

Artigos interessantes...