VBA În timp ce buclă

VBA În timp ce Loop este un concept important și puternic, pe care l-ați putut vedea în majoritatea limbajelor de programare. Dacă stăpâniți acest concept sub VBA, veți putea pregăti scripturi puternice care funcționează cu date din foi de calcul în moduri diferite și convenabile. În acest articol, pregătește-te să explorezi lumea diferitelor bucle, împreună cu mai multe exemple care vin în ajutorul tău.

Scopul buclei while este de a repeta un anumit bloc de declarații supus îndeplinirii unei condiții. Mai precis, în timp ce bucla repetă afirmația corespunzătoare în timp ce o condiție este True. Odată ce condiția devine falsă (Nu se întâlnește), bucla se încheie singură.

Există în principiu două tipuri de buclă în timp ce Microsoft Excel VBA:

  • VBA În timp ce-Wend Bucla
  • Bucla VBA Do-while

VBA while-Wend Loop există pentru a face codul compatibil cu o versiune mai veche de coduri. VBA Do-while este versiunea actualizată a buclei while, care este mai flexibilă și structurată în comparație cu cea anterioară și este recomandat să fie utilizat de comunitatea Microsoft.

În caz că vă întrebați ce înseamnă Wend, este o formă scurtă de „Încheiere” și funcționează la fel.

Exemple de VBA while Loop

Haideți să ne adâncim adânc în ghidul pas cu pas al diferitelor tipuri de VBA În timp ce buclele.

Puteți descărca acest șablon VBA while Loop Excel aici - șablonul VBA În timp ce buclă Excel

Exemplul # 1

VBA În timp ce-Wend Bucla

Sintaxă:

Să luăm un exemplu pentru a vedea acest lucru într-un mod mai bun.

  • Definiți o sub-procedură pentru a crea o macro sub noul modul.

Cod:

 Sub whileEx1 () End Sub 

  • Setați două variabile Numărul la Unu și Suma la Zero.

Cod:

 Sub CândEx1 () Număr = 1 Suma = 0 Încheiere Sub 

  • Setați o condiție de timp pentru variabila Număr.

Cod:

 Sub CândEx1 () Număr = 1 Suma = 0 În timp ce Număr <= 10 Încheiere Sub 

  • Adăugați declarații care vor fi executate pentru această condiție în timp.

Cod:

 Sub MentineEx1 () Numar = 1 Suma = 0 In timp ce Numar <= 10 Suma = Suma + Numar Numar = Numar + 1 Fin Sub 

  • Adăugați Debug.Print Sum, astfel încât suma primelor 10 numere naturale să poată fi tipărită unul câte unul în Fereastra Imediată.

Cod:

 Sub MentineEx1 () Numar = 1 Suma = 0 In timp ce Numar <= 10 Suma = Suma + Numar Numar = Numar + 1 Debug.Imprima Suma Finala Sub 

  • În cele din urmă, încheiați bucla Mentă cu Wend.

Cod:

 Sub MentineEx1 () Numar = 1 Suma = 0 In timp ce Numar <= 10 Suma = Suma + Numar Numar = Numar + 1 Debug.Imprima Sum Wend End Sub 

  • Apăsați pe F5 sau pe butonul Run pentru a rula acest cod și a vedea rezultatul.

În acest cod, variabila sumă este setată la zero. Așadar, de fiecare dată când numărul este mărit cu 1 până ajunge la 10 (folosind bucla while), variabila sumă va adăuga suma anterioară cu numărul curent și o va afișa sub Fereastra Imediată rând pe rând sau suma treptată pe care o puteți spune.

Exemplul # 2

Bucla VBA Do-while

Buclă în timp ce este verificată, înainte de începerea buclei

Există două moduri în care se poate executa bucla în timp ce bucla poate fi executată.

  • Puteți adăuga condiție înainte de începerea buclei (este aceeași cu bucla while-Wend). Aici, nu ar exista nicio iterare a buclei dacă starea eșuează pentru prima dată.
  • Puteți adăuga starea la ultima buclă pentru a verifica. În acest caz, va exista cel puțin o iterație a buclei înainte de eșecul condiției.

Sintaxă:

Să luăm un exemplu pentru a face lucrurile mai clare.

  • Introduceți un nou modul și definiți o nouă sub-procedură pentru a defini o macrocomandă.

Cod:

 Sub whileEx2 () End Sub 

  • Definiți o nouă variabilă I ca un număr întreg. Și inițiați valoarea sa la 1.

Cod:

 Sub whileEx2 () Dim i Dim Integer i = 1 End Sub 

  • Utilizați Do-while pentru a adăuga o condiție la începutul buclei.

Cod:

 Sub whileEx2 () Dim i Dim Integer i = 1 Faceți în timp ce i <= 10 End Sub 

  • Adăugați declarații pentru a fi executate atât timp cât condiția este adevărată. Adăugați linia de mai jos a codului la macro.

Cod:

 Sub whileEx2 () Dim i Dim Integer i = 1 Faceți în timp ce i <= 10 celule (i, 1) .Value = i * i End Sub 

Această afirmație permite ith rândul primei coloane să stocheze valoarea pătrată a numerelor.

  • Adăugați încă o declarație care permite o creștere în i cu 1 la fiecare iterație a buclei.

Cod:

 Sub whileEx2 () Dim i Dim Integer i = 1 Faceți în timp ce i <= 10 celule (i, 1). Valor = i * ii = i + 1 Loop End Sub 

  • Completați această buclă adăugând instrucțiunea Loop la sfârșitul codului.

Să vedem soluția acestui cod:

Pentru valorile i de la 1 (i = 1 inițial) la 10, se calculează, i * i (adică valoarea pătrată pentru fiecare valoare întreagă a i) și se introduce sub rândurile 1 la 10 din coloana 1 (respectiv coloana A). . Rezultatul nu este altceva decât valorile pătrate ale numerelor întregi de la 1 la 10.

  • Rulați acest cod apăsând butonul F5 sau Run și vedeți ieșirea.

Puteți vedea valorile pătrate ale numerelor naturale 1 până la 10 care sunt stocate în fiecare celulă separat de coloana A.

Exemplul # 3

Buclă de timp în timp ce starea este bifată la sfârșitul buclei

Sintaxă:

Să vedem un exemplu pentru a vedea bucla într-un mod mai bun.

  • Introduceți un nou modul și definiți o nouă sub-procedură pentru a stoca o macrocomandă.

Cod:

 Sub whileEx3 () End Sub 

  • Definiți un nou număr întreg i la fel ca în exemplul precedent și atribuiți o valoare de pornire.

Cod:

 Sub whileEx3 () Dim i Dim Integer i = 1 End Sub 

  • Utilizați o condiție Do pentru a adăuga instrucțiunile care trebuie executate atât timp cât condiția este adevărată.

Cod:

 Sub whileEx3 () Dim i Dim Integer i = 1 Do Cells (i, 2) .Value = i * ii = i + 1 End Sub 

Se recomandă utilizarea spațiului alb (tasta Tab) ca o indentare prezentată în codul de mai sus, care permite rularea lină a codului și, de asemenea, definește un format de structură bun pentru cod.

  • Folosiți Loop în timp ce adăugați o condiție care trebuie verificată pentru ca fiecare instrucțiune să fie executată.

Cod:

 Sub whileEx3 () Dim i Dim Integer i = 1 Do Cells (i, 2) .Value = i * ii = i + 1 Loop while i <= 10 End Sub 

  • Rulați acest cod apăsând manual butonul F5 sau Run și vedeți ieșirea.

Veți vedea ieșirea așa cum se arată în figura de mai sus.

Cum funcționează acest cod în backend?

Sistemul înmulțește valoarea lui (începând de la 1) în sine și se stochează în a doua coloană (celule (i, 2)) pentru fiecare rând, unul câte unul. Codul nu se mai execută de îndată ce valoarea variabilei i ajunge la 10. Ieșirea ar putea fi aceeași ceea ce înseamnă logic că ambele coduri funcționează la fel. Dar diferența principală constă în compilarea codului. În ultimul exemplu, starea era deja acolo, iar sistemul știa până la ce număr trebuie să meargă. Cu toate acestea, în acest cod, sistemul nu cunoaște condiția la momentul executării declarațiilor și rulează iterarea una câte una. Atâta timp cât starea este falsă, codul a încetat executarea.

Lucruri de reținut despre VBA În timp ce buclă

  • Bucla while-Wend este învechită și trebuie doar să fie compatibilă cu versiunile mai vechi de coduri. În schimb, ar trebui să utilizați o buclă de timp în timp.
  • Bucla Do-while este mai flexibilă și mai bine structurată în comparație cu bucla while-Wend.
  • Bucla de derulare poate fi utilizată în două moduri în care într-un caz puteți adăuga mai întâi condiție care trebuie verificată și apoi adăugați declarații care îndeplinesc condiția. În alt mod, puteți adăuga mai întâi declarații și mai târziu adăugați condiția de verificat.
  • Se recomandă utilizarea indentărilor în bucle, astfel încât codul să poată fi mai dinamic și mai ușor de citit.

Articole recomandate

Acesta a fost un ghid pentru VBA Do while Loop. Aici am discutat despre cum să folosiți Excel VBA Do while Loop împreună cu câteva exemple practice și șablonul excel descărcabil. De asemenea, puteți parcurge și alte articole sugerate -

  1. Cum se utilizează funcția FIND în Excel?
  2. Cum se utilizează funcția VBA TRIM?
  3. Arhiere VBA | Tutorial complet
  4. Cum se folosește carcasa VBA Select?

Categorie: