VBA Break For Loop

Excel VBA Break For Loop

Dans VBA Break For Loop est également connu sous le nom de exit for loop, chaque boucle de n'importe quelle procédure a reçu un certain ensemble d'instructions ou de critères pour qu'elle s'exécute plus tard, mais il est très courant que certaines boucles entrent dans une boucle infinie corrompant ainsi le code dans de tels scénarios, nous avons besoin de pause ou de sortie pour que la boucle sorte de certaines situations.

Supposons que nous ayons demandé à la boucle de s'exécuter 10 fois et qu'en fonction de la condition donnée si la valeur de la cellule ou tout autre critère fourni réussit, elle doit quitter la boucle Excel avant de terminer le quota de boucle complète de 10. Dans cet article , nous allons vous montrer comment sortir de la boucle en fonction des critères donnés.

Comment interrompre / quitter des boucles dans VBA?

Vous pouvez télécharger ce modèle Excel VBA Break For Loop ici - Modèle Excel VBA Break For Loop

# 1 - Pause pour la prochaine boucle

VBA For Next Loop est utilisé pour boucler les cellules et effectuer un ensemble spécifique de tâches. Pour un exemple, regardez le code VBA ci-dessous.

Code:

 Sub Exit_Loop () Dim K As Long For K = 1 To 10 Cells (K, 1) .Value = K Next K End Sub 

Cela insérera les numéros de série de la cellule A1 à A10.

C'est la chose évidente avec For Next Loop.

Maintenant, je veux rompre la boucle lorsqu'une valeur trouvée dans les 10 premières cellules, pour cela, j'ai entré une valeur de texte dans la cellule A8.

Maintenant, je veux l'instruire dans le code en disant "si la cellule en boucle a une certaine valeur, elle doit quitter la boucle avant la limite prédéterminée".

Code:

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

Regardez cette ligne de code:

Si Cellules (K, 1) .Valeur = "" Alors

Cellules (K, 1) .Valeur = K

Autre

  Quitter pour

Fin si

Il dit Si Cells (K, 1) .Value = "" cellule en boucle est égal à rien continuez la boucle d'insertion des numéros de série de 1 à 10.

La dernière partie de la boucle dit:

Autre

  Quitter pour

Si la condition ci-dessus n'est pas VRAIE, alors boucle «Exit For».

Maintenant, exécutez le code, il insérera les numéros de série jusqu'à la cellule A7.

Le code ci-dessus a immédiatement quitté la boucle sans rien dire, comment savons-nous qu'il a quitté la boucle.

Pour effacer cette ambiguïté, nous devons mettre une simple boîte de message VBA comme ci-dessous.

Code:

 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 "Nous avons obtenu une cellule non vide, dans la cellule" & Cellules (K, 1) .Address & vbNewLine & "Nous sortons de la boucle" Exit For End If Next K End Sub 

Lorsque vous parcourez la cellule en boucle, si une cellule non vide est trouvée, il affichera le message disant «Nous avons une cellule non vide, dans la cellule A8. Nous sortons de la boucle ».

Cela informera également l'utilisateur de la sortie de la boucle avec une adresse de cellule. Si une valeur est entrée par erreur, nous pouvons vérifier l'adresse de la cellule retournée dans la boîte de message.

# 2 - Pause faire jusqu'à la boucle

Comme pour la façon dont nous avons quitté For Next Loop, nous pouvons également quitter la boucle «Do Until». Par exemple, regardez le code ci-dessous.

Code:

 Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do jusqu'à K = 11 Cells (K, 1) .Value = KK = K + 1 Loop End Sub 

Ce code effectue également la tâche d'insérer les numéros de série. Par exemple, si nous voulons quitter la boucle lorsque la valeur de la variable «k» devient 6, nous devons entrer les critères comme IF k = 6 puis quitter la boucle.

Code:

 Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do Until K = 11 If K <6 Then Cells (K, 1) .Value = K Sinon Exit Do End If K = K + 1 Loop End Sub 

Cela exécutera la boucle jusqu'à ce que la valeur de la variable devienne 6, après quoi elle quittera la boucle. Si vous souhaitez montrer le message à l'utilisateur, vous pouvez également ajouter la boîte de message.

Code:

 Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do Until K = 11 If K 5 "Exit Do End If K = K + 1 Loop End Sub 

Cela affichera le message ci-dessous.

Comme ça en fonction des critères donnés, on peut sortir de la boucle si les critères sont VRAI ou bien on peut continuer la boucle.