Un exemple d'utilisation de l'instruction for next. « Opérateurs de boucle VBA. Boucles imbriquées. Boucle avec des arguments négatifs

Cycle est un groupe d'instructions exécutées plusieurs fois. Pour organiser les boucles en VBA, c'est-à-dire l'exécution multiple d'une ou plusieurs instructions, vous pouvez utiliser deux groupes principaux : les boucles avec l'énumération For ... Next et les boucles avec la condition Do ... Loop. Il existe deux types Pour ... Suivant(For-Next et For Each-Next) et deux types de boucles Faire ... Boucle(Do While ... Loop et Do Until ... Loop), qui diffèrent par le type de condition à vérifier.

La boucle For-Next

La boucle la plus courante dans VBA est la boucle d'énumération For-Next. Ce cycle doit définir les limites (valeurs de début et de fin du compteur) dans lesquelles la variable du cycle changera.

L'opérateur de boucle a la syntaxe suivante :
Pour Pour n = 1)
Ce Valeur finale ( Ce 10)
Étape Incrément ( Étape 2)

Prochain[compteur]

Ici une variable est un compteur, la valeur de la variable augmente ou diminue à chaque itération de la boucle. S'il n'y a pas d'étape dans la construction de la boucle, alors l'incrément est 1 (par défaut). Pour une sortie anticipée de l'opérateur de boucle, c'est-à-dire avant que le compteur n'atteigne sa valeur finale, l'opérateur doit être introduit dans la construction de la boucle Quitter pour.

Prendre en compte Quitter pour l'opérateur de boucle a la syntaxe suivante :
Pour compteur = valeur initiale (par exemple, par exemple, Pour n = 1)
Ce Valeur finale ( Ce 10)
Étape Incrément ( Étape 2)
[Instructions] ou [Bloc opérateur]
Quitter pour
Prochain[compteur]

Pour traiter un groupe d'objets ou de tableaux homogènes, la construction de boucle suivante est utilisée :
Pour chaqueÉlément Dans Groupe (nom d'un groupe d'objets homogènes)
[Instructions] ou [Bloc opérateur]
Quitter pour
Prochainélément

Boucles avec la condition Do While ... Loop et Do Until ... Loop

L'instruction Do While ... Loop boucle tant qu'une condition spécifiée est remplie. Il convient de noter que la condition est vérifiée avant l'exécution de l'instruction ou du groupe d'instructions.

Dans ce cas, la syntaxe des instructions Do While ... Loop est la suivante :
Faire pendant condition (par exemple, x<20)
[Instructions] ou [Bloc opérateur]
Quitter Faire
Boucle


Faire
[Instructions] ou [Bloc opérateur]
Quitter Faire
Boucle pendant queétat

L'instruction Do Until ... Loop boucle jusqu'à ce que la condition soit remplie, et lorsque la condition est remplie, l'instruction quitte la boucle. La condition est vérifiée avant l'exécution de l'instruction ou du groupe d'instructions.

Dans ce cas, la syntaxe des instructions Do Until ... Loop est la suivante :
Faire jusqu'à ce que condition (par exemple, x = 20)
[Instructions] ou [Bloc opérateur]
Quitter Faire
Boucle

Si vous devez vérifier la condition après que les instructions ou le bloc d'instructions ont été exécutés au moins une fois, vous pouvez appliquer la construction suivante de l'opérateur de boucle :
Faire
[Instructions] ou [Bloc opérateur]
Quitter Faire
Boucle jusqu'àétat

Pour ... Boucle suivante dans VBA Excel, sa syntaxe et la description des composants individuels. Exemples d'utilisation de la boucle For ... Next.

La boucle For ... Next dans VBA Excel est conçue pour exécuter un groupe d'instructions le nombre de fois requis, spécifié par la variable de contrôle de boucle - le compteur. Au fur et à mesure que la boucle s'exécute, le compteur incrémente ou diminue après chaque itération du nombre spécifié par l'instruction Step ou, par défaut, de un. Lorsque vous devez appliquer une boucle à des éléments dont le nombre et l'indexation dans un groupe (plage, tableau, collection) sont inconnus, vous devez utiliser.

Pour ... Syntaxe de la boucle suivante

For counter = start To end [Step step] [statements] [Exit For] [statements] Next [counter] For counter = start To end [Step step] [statements] [Exit For] [statements] Next [counter]

Les crochets indiquent les attributs facultatifs de la boucle For ... Next.

Pour... Composants de la boucle suivante

Composant La description
compteur Attribut obligatoire. Variable numérique qui agit comme un compteur, également appelée variable de contrôle de boucle.
début Attribut obligatoire. Expression numérique qui spécifie la valeur de départ du compteur.
finir Attribut obligatoire. Expression numérique qui spécifie la valeur finale du compteur.
Étape * Attribut facultatif. Un opérateur indiquant que l'étape de boucle sera spécifiée.
étape Attribut facultatif. Expression numérique qui spécifie l'étape de la boucle. Il peut être positif ou négatif.
déclarations Attribut ** facultatif. Opérateurs de votre code.
Quitter pour Attribut facultatif. L'instruction pour quitter la boucle jusqu'à ce qu'elle se termine.
Suivant [compteur] Ici compteur- attribut facultatif. C'est le même nom pour la variable de contrôle de boucle et peut être omis ici.

*Si l'attribut Étape est manquant, la boucle For ... Next s'exécute avec un pas par défaut de 1 .

**Si vous n'utilisez pas votre code dans la boucle, le sens de l'utilisation de la boucle est perdu.

Pour ... Exemples de boucle suivante

Vous pouvez copier les exemples de boucles dans votre module VBA, les exécuter séquentiellement et regarder les résultats.

Le cycle le plus simple

Remplissez les dix premières cellules de la première colonne de la feuille Excel active avec des nombres de 1 à 10 :

Sub test1 () Dim i As Long For i = 1 à 10 Cellules (i, 1) = i Next End Sub

La boucle la plus simple avec un pas

L'opérateur Step avec la valeur 3 a été ajouté à la boucle précédente et les résultats sont écrits dans la deuxième colonne :

Sub test2 () Dim i As Long For i = 1 à 10 Step 3 Cells (i, 2) = i Next End Sub

Boucle avec des arguments négatifs

Cette boucle remplit les dix premières cellules de la troisième colonne dans l'ordre inverse :

Sub test3 () Dim i As Long For i = 0 To -9 Step -1 Cells (i + 10, 3) = i + 10 Next End Sub

Augmentez la taille du pas à -3 et écrivez les résultats dans la quatrième colonne de la feuille Excel active :

Sub test4 () Dim i As Long For i = 0 To -9 Step -3 Cells (i + 10, 4) = i + 10 Next End Sub

Boucle imbriquée

La boucle externe définit séquentiellement les index des dix premières lignes de la feuille active, et la boucle imbriquée ajoute les nombres dans les quatre premières cellules de la ligne avec l'index actuel et écrit la somme dans la cellule de la cinquième colonne. Avant de commencer le cycle imbriqué avec addition cumulative, nous mettons à zéro la cinquième cellule de la ligne correspondante de sorte que si un nombre s'y trouve, il ne sera pas ajouté au montant total.

Sub test5 () Dim i1 As Long, i2 As Long For i1 = 1 To 10 "La cinquième cellule de la ligne i1 est affectée à 0 Cells (i1, 5) = 0 For i2 = 1 To 4 Cells (i1, 5) = Cells (i1 , 5) + Cellules (i1, i2) Next Next End Sub

Sortie de la boucle

Dans la sixième colonne de la feuille active, nous écrivons les noms de dix animaux, bien sûr, en utilisant la boucle For ... Next :

Sous test6 () Dim i As Long For i = 1 To 10 Cells (i, 6) = Choose (i, "Ours", "Elephant", "Girafe", "Antilope", _ "Crocodile", "Zebra", "Tigre", "Lézard", "Lion", "Hippopotame") Next End Sub

Le prochain cycle cherchera dans la sixième colonne le crocodile qui a mangé les galoches. Dans la cellule de la septième colonne, le cycle, jusqu'à ce qu'il rencontre le crocodile, écrira la ligne « Il y avait un cycle ici », et lorsqu'il trouvera le crocodile, il écrira « Il a mangé des galoches » et cessera de fonctionner en exécutant Quitter pour la commande. Cela sera visible dans les cellules à côté des noms des animaux sous le crocodile, dans lesquelles il n'y aura pas de texte "Il y avait un cycle".

Sous test7 () Dim i As Long For i = 1 à 10 If Cells (i, 6) = "Crocodile" Then Cells (i, 7) = "He ate galoches" Exit For Else Cells (i, 7) = "Ici il y avait un cycle "End If Next End Sub

Vous recevrez ces données sur la feuille Excel active si vous l'exécutez séquentiellement dans l'éditeur VBA. les sept exemples de routines qui illustrent les boucles For ... Next.

Boucle avec des arguments fractionnaires

Les attributs de début, de fin et d'étape peuvent être représentés par un nombre, une variable ou une expression numérique :

Pour i = 1 à 20 échelon 2 pour i = a à b échelon c Pour i = a - 3 à 2b + 1 échelon c / 2

À la suite de l'évaluation de la valeur d'une variable à l'extérieur de la boucle ou d'une expression à l'intérieur de celle-ci, un résultat fractionnaire peut être obtenu. VBA Excel l'arrondira à un entier en utilisant :

"Valeurs d'attributs avant arrondi pour i = 1,5 à 10,5 échelon 2,51" Valeurs d'attributs arrondies pour i = 2 à 10 échelon 3

Essayez de ne pas autoriser les valeurs d'argument non arrondies à entrer dans le corps de la boucle For ... Next, afin de ne pas obtenir des résultats imprévisibles de son exécution. Si vous avez besoin de nombres fractionnaires et que vous souhaitez utiliser l'arrondi normal, utilisez WorksheetFunction.Round dans le code VBA pour arrondir le nombre avant de l'utiliser dans une boucle For ... Next.

Cette leçon couvrira le travail avec une boucle Pour en VBA. Un exemple de travail avec une boucle For, un exemple de création de formules dans Excel à l'aide de macros sera également présenté.

Cycle Pour fonctionne sur le principe d'un compteur. Pour il est utilisé dans les cas où il est nécessaire de répéter certaines actions un nombre prédéterminé de fois. Par exemple, la boucle Pour souvent utilisé lors de la lecture de tableaux.

Cycle Pour a la syntaxe suivante :
Pour compteur = début de cycle À fin de cycle [Étape étape]
un groupe d'opérateurs, d'équipes, etc.
Quitter pour
Prochain compteur

  • "compteur" - une variable qui change pour le spécifié "étape". Si l'étape n'est pas spécifiée, la valeur par défaut est un.
  • "début de cycle", "fin de cycle "- nombres ou variables indiquant la limite inférieure du compteur et la limite supérieure. Le cycle s'arrête lorsque "compteur">"fin de cycle "( ou, si le cycle est inversé, c'est-à-dire avec un pas de -1, alors "compteur"< "fin de cycle").
  • Quitter pour - la commande d'arrêt forcé du cycle. Il est utilisé dans les cas où un événement s'est produit, après quoi il est nécessaire d'arrêter l'exécution de commandes en boucle, ou d'empêcher qu'une erreur ne se produise.

Regardons quelques exemples d'utilisation de la boucle Pour... À l'avenir, nous rencontrerons assez souvent ce cycle.

Exemple 1
Soit deux colonnes C et E remplies de nombres :

Additionnez les nombres de la colonne C avec les nombres de la colonne E comme suit :
C2 + E21, C3 + E20, ..., C21 + E2. Affichez le résultat dans la colonne D sous forme de formule, c'est-à-dire le contenu de la cellule de résultat doit être "= C2 + E21".

Le code de la macro ressemble à ceci (nous lisons où écrire le code):

Sous Boucle_For ()
"constante indiquant la limite du cycle, c'est à dire à quelle valeur le cycle doit s'exécuter
Const n = 21
Pour je = 2 À m
"créer une formule de ligne et l'enregistrer dans une cellule
Cellules (i, 4) = "= C" & CStr(i) & "+ E" & CStr((n - je) + 2)
"continuation lors de l'exécution en boucle
Prochain je
"le reste du code du programme
Fin du sous-marin

Nous analysons le code écrit :

  • Const n = 21 - description de la constante n avec la valeur 21, c'est-à-dire le nombre de lignes à parcourir dans la boucle Pour;
  • Pour je = 2 À n - i compteur qui changera de 1 à chaque passage de la boucle. Le compteur commence à 2 et se termine lorsque i> n ;
  • Cellules (i, 4) - cellule dédié feuille, i est le numéro de ligne, 4 est le numéro de la colonne dans laquelle le résultat est sorti. Notez que notre compteur i indique le numéro de ligne de la feuille Excel ;
  • Ensuite je - opérateur pour fermer la boucle et traduire le pointeur en Pour. Tout entre Pour et Prochain fonctionne en boucle ;
  • CStr - une fonction qui convertit un nombre en texte.

Nous attribuons à la cellule une formule créée comme suit "= C" & CStr(i) & "+ E" & CStr((n - je) + 2). Le signe & - caractères "collants", lignes. En conséquence, nous obtenons la formule "= Сn + E ((n - i) + 2)" où n = 21, i est un compteur.
Craintivement? Il semble seulement :)

Tout. Après avoir exécuté la macro, nous obtiendrons la colonne suivante (en surbrillance) et dans chaque cellule la formule :

Exemple 2
Regardons maintenant une boucle avec l'étape indiquée. Après avoir calculé la dernière macro, nous avons obtenu trois colonnes, nous devons maintenant soustraire D de la colonne E et sortir les formules de soustraction dans la colonne F. Le code macro est le suivant :

Sous Loop_For_with_step ()
Const n = 21
Pour je = n À 2 Étape -1
Cellules (i, 6) = "= E" & CStr(identifiant" & CStr(je)
Prochain je
Fin du sous-marin

Dans ce cas, tout est pareil, seul le cycle "passe" désormais non pas de 2, mais de 21 à 2 avec un pas (Step) de -1.
Le résultat sera le suivant :

Cycle Pour, en VBA, n'est pas la seule boucle. À l'avenir, nous envisagerons quelques options supplémentaires pour les boucles, dont vous ne pouvez pas vous passer lors de l'écriture de macros dans Excel.

Leçon de la série : " Programmation Visual Basic.NEN pour les écoliers "

Vous connaissez le champ ComboBox.
Dans cette leçon, nous continuerons à étudier les opérateurs du langage Visual Basic.Net, en nous attardant sur les opérateurs de la boucle.
Les structures algorithmiques cycliques sont de trois types :

  1. les boucles avec un compteur, dans lesquelles le corps de la boucle est exécuté un certain nombre de fois ;
  2. boucles pour le traitement de tableaux ou de collections ;
  3. boucles conditionnelles, dans lesquelles le corps de la boucle est exécuté tant que la condition est vraie (ou jusqu'à ce que la condition devienne vraie).

Dans cette leçon, nous examinerons l'opérateur de boucle de compteur (For... Next). Écrivons un projet en utilisant cet opérateur.

Cycle avec compteur Pour. ... ... Suivant t est utilisé lorsque le nombre de répétitions à effectuer est connu à l'avance.

Diagramme

Vue générale de l'opérateur

For Counter = StartValue To EndValue Loop Body Next [Counter]

La syntaxe de l'instruction est la suivante : la ligne commençant par le mot-clé For est la tête de la boucle, et la ligne avec le mot-clé Next est la fin de la boucle, entre elles se trouvent les instructions qui constituent le corps de la boucle.

Algorithme d'exécution de l'instruction For. ... ... Prochain

  1. La valeur de la variable Counter est définie égale à StartVal.
  2. La condition Compteur est vérifiée<= КонЗнач
  3. Si la condition est remplie, le corps de la boucle est exécuté. La variable Compteur est modifiée par la taille du pas : Compteur = Compteur + pas.
  4. Lorsque la variable Counter atteint la valeur End, la boucle est terminée et les instructions suivantes sont exécutées.

Le programmeur peut organiser une sortie prématurée de la boucle en utilisant la construction Exit For. Dans ce cas, une sortie automatique du cycle se produit et le contrôle est transféré à la commande suivant le cycle.

Projet de revenu de dépôt

Pour rédiger un projet qui calcule le revenu sur le dépôt, fournit le calcul des intérêts simples et composés. Des intérêts simples sont facturés à la fin de la durée du dépôt, des intérêts composés - mensuellement et sont ajoutés au montant du dépôt initial et le mois suivant, des intérêts sont facturés sur le nouveau montant. La forme recommandée est illustrée dans la figure.

Technologie d'exécution

Cette leçon vous a montré comment utiliser une boucle For ... Next pour répéter votre code un nombre spécifié de fois.

Une boucle est une structure algorithmique,à l'aide de laquelle la répétition multiple du bloc d'instructions est implémentée.

Opérateur de boucle de compteur (Pour ... Suivant)

L'instruction For… Next vous permet d'exécuter cycliquement un ensemble d'instructions (opérateurs) un nombre spécifié de fois. Syntaxe des instructions :

Pour compteur = valeur_départÀ valeur_fin

[instructions]

[instructions]

Prochain [ compteur]

Paramètre compteur Est une variable numérique qui change automatiquement sa valeur par la valeur étape après chaque répétition du cycle. Le cycle se déroule jusqu'à compteur£ valeur_fin avec une valeur positive du paramètre étape ou jusqu'à compteur³ valeur_fin avec une valeur négative du paramètre étape... Ainsi, la boucle ne sera pas exécutée même une fois si, avec une valeur de pas positive valeur_départ plus que valeur_fin... Si le paramètre Step étape est omis, alors par défaut l'incrément de la variable de compteur est égal à 1.

L'instruction Exit For termine l'exécution de la boucle plus tôt que prévu et transfère le contrôle à l'instruction suivant l'instruction dans la boucle. Exit For est généralement placé dans une instruction conditionnelle, par exemple :

Si état Puis sortie pour

Noter. Selon la syntaxe de l'instruction For, le paramètre compteur- une variable arithmétique de tout type, il est encore préférable d'utiliser le type entier de la variable, car la partie fractionnaire de la valeur d'une variable de type réel comporte généralement une erreur. Cela a à voir avec la façon dont les nombres sont stockés dans un ordinateur.

Exemple 1

Trouver la somme du premier 10 nombres naturels: S = 1 + 2 + 3 + ...+ 10 ... Fragment du programme :

Dim I comme entier, S comme entier

S = 0 " Remise à zéro de la valeur de la variable S

Pour i = 1 à 10 " Le début du cycle. Réglage des valeurs de début et de fin
"paramètre de boucle. Le pas de boucle par défaut est 1.

S = S + je " L'opérateur d'affectation est exécuté à chaque
"exécuter la boucle, dans cet exemple 10 fois

Ensuite je " Fin du cycle. La valeur du paramètre de boucle est incrémentée.

Dans ce fragment de programme, la boucle sera exécutée exactement 10 fois.

Exemple 2

Sortez dans la 1ère colonne de la feuille de calcul (à partir de la 2ème ligne) les valeurs de x dans la plage de 0 à 3,2 par incréments de 0,4.

Sous-onglet public ()

Dim x As Single, i As Integer

Pour x = 0 à 3,2 pas de 0,4

Bien que la longueur de l'intervalle soit précisément divisible par le pas de 0,4, le résultat sur la feuille de calcul ressemble à ceci :

Qu'est-ce qui devrait être fait?

1. Vous pouvez légèrement augmenter la valeur finale, dans cet exemple, au lieu de 3.2, écrivez 3.201.

2. Déterminer le nombre de répétitions d'un chicle et écrire une boucle sur un compteur de type entier.

Dans ce cas, le programme prendra la forme :

Sous-onglet public1 ()

Dim x en tant qu'unique, i en tant qu'entier, n en tant qu'entier

n = CInt ((3,2 - 0) / 0,4)

Pour i = 0 à n étape 1

Cellules (i + 2, 1) = x

Pour chaque... instruction de boucle suivante

La boucle For Each… Next vous permet de répéter l'exécution d'un groupe d'instructions pour chaque élément d'un tableau ou d'une famille. Cette instruction a la syntaxe suivante :

Pour chaque élément Dans Grouper

[instructions]

[instructions]

Prochain [ élément]

Paramètre élément Est une variable qui représente un élément d'une famille ou d'un tableau. Argument Grouper- le nom de la baie ou de la famille. Les instructions sont exécutées une seule fois pour chaque membre du groupe. L'utilisation d'une instruction est pratique car vous n'avez pas besoin de savoir à l'avance combien d'éléments se trouvent dans un tableau ou une famille. Variable élément doit être de type Variant.

Exemple 1

Trouver la moyenne arithmétique de tous les éléments de la plage sélectionnée

Moyenne de la fonction publique (plage en tant que plage) en tant que double

Dim Element en tant que variante

Dim Sum en tant que double

Dim Number en tant qu'entier

Quantité = 0

Pour chaque article de la gamme

Somme = Somme + Élément

Quantité = Quantité + 1

Élément suivant

Moyenne = Montant / Quantité

Application. La plage sélectionnée de cellules adjacentes doit contenir des nombres. Les nombres dans les cellules vides sont considérés comme étant 0. Le texte dans une cellule entraînera une erreur.

Les instructions ci-dessus If… End If, Select… Case, For… Next, For Each… Next sont un groupe d'instructions de contrôle qui modifient l'ordre dans lequel les commandes sont exécutées. Les instructions de contrôle peuvent être imbriquées dans n'importe quel ordre.

Vous avez aimé l'article ? A partager entre amis :