7 Des exemples de boucles For dans Microsoft Excel VBA
_Si vous écrivez un programme VBA et que vous souhaitez exécuter la même tâche plusieurs fois, vous pouvez le faire en utilisant VBA pour les boucles. VBA est un langage de programmation séquentiel. Chaque ligne de code est exécutée de haut en bas jusqu’à ce qu’il n’y ait plus de lignes de code à lire. Si vous souhaitez revenir en arrière et effectuer une tâche, vous devez forcer en utilisant le code de macro.
Vous obtenez des résultats avec loop._
La boucle For dans VBA est l’un des types de boucle les plus courants. La boucle For a deux formes: For Next et For Each In Next. La boucle For est généralement utilisée pour se déplacer séquentiellement dans une liste d’éléments ou de nombres.
Pour terminer la boucle For à un moment donné, nous pouvons utiliser l’instruction exit.
For Loop tournera en rond jusqu’à ce qu’il remplisse la condition de fin. Une fois la condition de fin remplie, le flux de programmation continuera vers le bas, dans sa direction naturelle.
The For … Next loop has the following syntax: For counter = start_counter To end_counter 'Do something here (your code) Next counter
Nous créons en fait une boucle qui utilise un compteur variable comme «garde-temps» de la boucle. Nous le définissons sur une valeur égale à start_counter au début de la boucle, puis l’incrémentons de 1 pendant chaque boucle jusqu’à ce qu’il remplisse la condition de fin. La boucle s’exécutera jusqu’à ce que la valeur du compteur devienne égale à end_counter. La boucle s’exécute pour la dernière fois lorsque les deux valeurs ci-dessus correspondent, puis la boucle s’arrête.
Tout ce qui précède peut être déroutant pour certaines personnes, alors préparons-nous et commençons à apprendre For Loop dans Excel avec quelques exemples.
Créez un nouveau classeur Excel puis enregistrez-le avec l’extension .xlsm Pour lancer l’écran de l’éditeur Visual Basic, utilisez ALT + F11 Insérer un nouveau module Copiez le code ci-dessous dans le module standard VB
Boucle 1 (Affichage du numéro avec msgbox)
Sub Loop1() Dim StartNumber As Integer Dim EndNumber As Integer EndNumber = 5 For StartNumber = 1 To EndNumber MsgBox StartNumber & " is " & "Your StartNumber" Next StartNumber End Sub
Explication du code:
Le code VBA nécessite que vous attribuiez une valeur à StartNumber, où EndNumber sont des variables déclarées comme des entiers comme point de départ de votre boucle Ces valeurs peuvent être n’importe quel nombre et nous avons EndNumber comme 5 StartNumber est commencé à 1 Pour StartNumber = 1 To EndNumber signifie que le code commencera de 1 (StartNumber) à 5 (EndNumber)
-
MsgBox StartNumber & « is » & « Your StartNumber » affichera la boîte de message suivante
Loop2 (Remplir les valeurs)
Sub Loop2() 'Fills cells A1:A56 with values of X by looping' --- Comment 'Increase value of X by 1 in each loop' --- Comment Dim X As Integer For X = 1 To 56 Range("A" & X).Value = X Next X End Sub
Explication du code:
Nous avons assigné X comme entier Pour X = 1 à 56; cela commencera par 1 et se poursuivra jusqu’à 56 avec un incrément de 1 à chaque fois * Range (« A » & X) .Value = X; cette ligne stockera la valeur de X et passera de la plage A1 à A56
Loop3 (Remplir les cellules avec la couleur de fond)
Sub Loop3() ' Fills cells B1:B56 with the 56 background colours' --- Comment Dim X As Integer For X = 1 To 56 Range("B" & X).Select With Selection.Interior .ColorIndex = X .Pattern = xlSolid End With Next X End Sub
Explication du code:
Nous avons assigné X comme un entier Pour X = 1 à 56 commencera par 1 et continuera jusqu’à 56 avec un incrément de 1 à chaque fois Range (« B » & X) .Select; cette ligne stockera la valeur de X et sélectionnera la cellule B1 à B56 Les 4 lignes suivantes, c’est-à-dire Avec Selection.Interior sélectionnera le colorindex intérieur et prendra la valeur de X de ce colorindex de sorte que 1 appartienne à la couleur noire; 2 appartient à la couleur blanche; 3 pour rouge et ainsi de suite
Boucle 4 (Remplir les valeurs par incrément de 2)
Par défaut, la valeur du pas est avant 1, mais elle peut être définie sur un nombre supérieur à 1.
Sub Loop4() ' Fills every second cell from C1:C50 with values of X' --- Comment Dim X As Integer For X = 1 To 50 Step 2 Range("C" & X).Value = X Next X End Sub
Explication du code:
Nous avons assigné X comme entier Pour X = 1 à 50 Étape 2; ceci commencera par 1 dans X jusqu’à 50 avec un incrément de 2 à chaque fois * Range (« C » & X) .Value = X; cette ligne stockera la valeur de X et passera de la plage C1 à C50
Boucle 5 (VBA pour boucle en sens inverse avec instruction STEP)
Il n’est pas nécessaire que le compteur de la boucle For se déplace uniquement des valeurs faibles aux valeurs supérieures; à la place, la boucle For peut s’exécuter à l’envers, c’est-à-dire des valeurs élevées à inférieures.
Même si la valeur de Pas est avant 1 par défaut, cependant, elle peut être définie sur un nombre dans l’ordre inverse.
Sub Loop5() ' Fills cells from D1:D50 with values of X' --- Comment ' In this case X decreases by 1' --- Comment Dim X As Integer, Row As Integer Row = 1 For X = 50 To 0 Step -1 Range("D" & Row).Value = X Row = Row + 1 Next X End Sub
Explication du code:
Nous avons assigné X & Row comme entier Row contient la valeur 1 For X = 50 to 0 Step -1; cela commencera de 50 avec décrémentation de 1 dans X jusqu’à 0 Range (« D » & Row) .Value = X; cette ligne stockera la valeur de X et passera de la plage D1 à D50
Boucle 6 (Remplit une cellule sur deux en sens inverse avec STEP-2)
Dans l’exemple de boucle For ci-dessus, nous pouvons utiliser le pas et l’ordre pour voir si la boucle For fonctionne dans le sens avant ou arrière.
Sub Loop6() ' Fills every second cell from E1:E100 with values of X' --- Comment ' In this case X decreases by 2' --- Comment Dim X As Integer, Row As Integer Row = 1 For X = 100 To 0 Step -2 Range("E" & Row).Value = X Row = Row + 2 Next X End Sub
Explication du code:
Nous avons assigné X & Row comme entier Row contient la valeur 1 For X = 100 to 0 Step -2; cela commencera de 100 avec décrémentation de 2 dans X jusqu’à 0 Range (« E » & Row) .Value = X; cette ligne stockera la valeur de X et passera de la plage E1 à E100
Boucle 7 (Boucle For avec condition IF: remplit les cellules à partir d’une cellule spécifique) Cela remplira les cellules de la cellule F11 avec la valeur 11 jusqu’à ce que X remplisse la condition IF
Sub Loop7() ' Starts to fill cells F11:F100 with values of X' --- Comment ' This will exit from the loop after 50' --- Comment Dim X As Integer For X = 11 To 100 Range("F" & X).Value = X If X = 50 Then MsgBox ("Bye Bye") Exit For End If Next X End Sub
Explication du code:
Nous avons assigné X comme entier Pour X = 11 à 100; commencera à partir de 11 avec incrément de 1 dans X jusqu’à ce que la condition satisfasse * Range (« F » & X) .Value = X; cette ligne stockera la valeur de X et passera à la plage F11 jusqu’à ce que la condition satisfasse
-
Après avoir entré la valeur 50 dans la cellule F50, la boîte de message suivante sera affichée
Si vous avez aimé nos blogs, partagez-les avec vos amis sur Facebook. Et vous pouvez aussi nous suivre sur Twitter et Facebook.
Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer, compléter ou innover notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]