VBA Break For Loop

Excel VBA Break For Loop

No VBA Break For Loop também é conhecido como saída para loop, cada loop em qualquer procedimento recebeu algum conjunto de instruções ou critérios para que ele execute mais de tempo, mas é muito comum que algum loop entre em um loop infinito, corrompendo assim o código em tais cenários, precisamos interromper ou sair do loop para sair de certas situações.

Digamos que instruímos o loop a ser executado 10 vezes e, com base na condição fornecida, se o valor da célula ou qualquer outro critério fornecido for bem-sucedido, ele precisa sair do loop do Excel antes de completar a cota de loop total de 10. Neste artigo , mostraremos como sair do loop com base nos critérios fornecidos.

Como interromper / sair de loops no VBA?

Você pode baixar este modelo VBA Break For Loop aqui - VBA Break For Loop Excel Template

# 1 - Pausa para o próximo ciclo

O VBA For Next Loop é usado para fazer um loop nas células e executar um conjunto específico de tarefas. Para obter um exemplo, veja o código VBA abaixo.

Código:

 Sub Exit_Loop () Dim K enquanto K = 1 a 10 células (K, 1) .Value = K Next K End Sub 

Isso irá inserir números de série da célula A1 a A10.

Esta é a coisa óbvia com o For Next Loop.

Agora eu quero quebrar o loop quando qualquer valor encontrado nas primeiras 10 células, para isso eu inseri algum valor de texto na célula A8.

Agora quero instruir isso no código dizendo “se a célula em loop tem certo valor, ela tem que sair do loop antes do limite pré-determinado”.

Código:

 Sub Exit_Loop () Dim K As Long For K = 1 To 10 If Cells (K, 1) .Value = "" Then Cells (K, 1) .Value = K Else Sair For End If Next K End Sub 

Veja estas linhas de código:

Se Células (K, 1) .Valor = “” Então

Células (K, 1). Valor = K

Outro

  Sair para

Fim se

Ele diz If Cells (K, 1) .Value = “” célula em loop é igual a nada, continue o loop de inserção de números de série de 1 a 10.

A última parte do loop diz:

Outro

  Sair para

Se a condição acima não for TRUE, então “Sair para” loop.

Agora execute o código que irá inserir os números de série até a célula A7.

O código acima saiu imediatamente do loop sem dizer nada, como sabemos se ele saiu do loop.

Para eliminar essa ambigüidade, precisamos colocar uma caixa de mensagem VBA simples como a seguir.

Código:

 Sub Exit_Loop () Dim K As Long For K = 1 To 10 If Cells (K, 1) .Value = "" Then Cells (K, 1) .Value = K Else MsgBox "Temos célula não vazia, na célula" & Células (K, 1) .Address & vbNewLine & "Estamos saindo do loop" Sair para End If Next K End Sub 

Ao percorrer a célula, se qualquer célula não vazia for encontrada, ele exibirá a mensagem dizendo “Nós temos uma célula não vazia, na célula A8. Estamos saindo do loop ”.

Isso informará ao usuário a saída do loop com um endereço de célula também. Se algum valor for inserido por engano, podemos verificar o endereço da célula retornado na caixa de mensagem.

# 2 - Break Do Until Loop

Assim como saímos do For Next Loop, também podemos sair do loop “Do Until”. Por exemplo, observe o código abaixo.

Código:

 Sub Exit_DoUntil_Loop () Dim K enquanto K = 1 Faça até K = 11 células (K, 1) .Value = KK = K + 1 Loop End Sub 

Este código também executa a tarefa de inserir números de série. Por exemplo, se quisermos sair do loop quando o valor da variável “k” se tornar 6, precisamos inserir os critérios como IF k = 6 e, em seguida, sair do loop.

Código:

 Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Faça Até K = 11 If K <6 Then Cells (K, 1) .Value = K Else Exit Do End If K = K + 1 Loop End Sub 

Isso executará o loop até que o valor da variável se torne 6, depois disso, sairá do loop. Se desejar mostrar a mensagem ao usuário, você também pode adicionar a caixa de mensagem.

Código:

 Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Faça Até K = 11 If K 5 "Exit Do End If K = K + 1 Loop End Sub 

Isso mostrará a mensagem abaixo.

Assim, com base nos critérios fornecidos, podemos sair do loop se os critérios forem TRUE ou então podemos continuar o loop.