Bucle Excel VBA

Buclele pot fi considerate cea mai bună componentă a VBA și pot fi considerate și inima Macros. De obicei, vă ajută să reduceți numărul de linii din codul dvs. și să lucrați în minute care pot dura ore întregi pentru o ființă umană.

În viața de zi cu zi, un programator vine cu astfel de cazuri în care trebuie să ruleze din nou același set de coduri. Se numește buclă. Evident, de fiecare dată când se execută același cod va da aproximativ același rezultat cu o modificare fracțională a variabilei. Bucla are un set mare de avantaje, dar cel mai important dintre toate este automatizarea. Ajută la automatizarea lucrurilor.

Dacă nu ați folosit VBA Script înainte, puteți doar să deschideți un registru de lucru excel și să apăsați pe Alt + F11 . Va deschide un proiect VBA.

Haideți să ne adâncim în interior.

Să presupunem că am vrut să tipărim 1 până la 10 numere la o singură fotografie. Putem face acest lucru cu următorul cod.

Cod:

 Sub bucla1 () Debug.Print 1 Debug.Print 2 Debug.Print 3 Debug.Print 4 Debug.Print 5 Debug.Print 6 Debug.Print 7 Debug.Print 8 Debug.Print 9 Debug.Print 10 End Sub 

Dacă puteți parcurge rapid codul, am adăugat Debug.Imprimați unul câte unul pentru a imprima numerele de la 1 la 10. După rularea codului, putem vedea ieșirea în Fereastra Imediată. Pentru a deschide Fereastra Imediată, apăsați Ctrl + G oriunde în Excel.

Rulați codul folosind tasta F5 sau manual, așa cum se arată în imaginea de mai jos. Deci, să verificăm ieșirea pentru acest cod.

Tipuri de bucle VBA în Excel

Fiind programator, nu veți fi niciodată dornici să scrieți linii repetitive care urmează să dea același rezultat. Ați dori să o automatizați. Prin urmare, vom vedea diverse bucle Excel VBA și cum să le utilizăm folosind câteva exemple.

Tipul # 1 - VBA pentru următorul buclă

Pentru următoarea buclă VBA ne permite să facem buclă prin intervalul de celule și să îndeplinim aceeași sarcină pentru fiecare celulă specificată în buclă. Numărul de început și numărul final trebuie indicate aici.

cod:

 Sub bucla1 () Pentru i = 1 Până la 10 celule (i, 1). Valoare = i Următorul i Încheiere Sub 

Acest cod oferă exact aceeași ieșire ca și precedentul. Cu toate acestea, cel mai de remarcat lucru din acest cod este reducerea unui număr de linii. Am redus codul cu 12 linii la doar un cod cu 5 linii.

În acest cod, bucla1 este numele macro. Bucla for pornește de la i = 1, tipărește valoarea i (adică 1) în celula excel și la Next, merge din nou la începutul buclei for și face ca i = 2 să imprime valoarea lui i (adică 2) în celula următoare și așa mai departe până când codul atinge ultima sa valoare, adică 10. De îndată ce codul atinge ultima valoare a lui i (10), codul se încheie singur din cauza ne disponibilității vreunei valori întregi peste 10.

Rulați codul folosind tasta F5 sau manual. Deci, puteți vedea ieșirea ca mai jos.

Tip # 2 - VBA pentru buclă cu pas înainte

După cum ați văzut în exemplul buclelor anterioare, am avut o creștere în 1 pas. În mod implicit, valoarea pasului este considerată 1 în VBA. Cu toate acestea, este posibil să stabilim un pas propriu? Să presupunem că doriți să vedeți doar numerele între 1 și 20. Cum se poate face?

Așa cum sugerează matematica generală, numerele care se află la distanța de 2 unul de celălalt (pornind de la un prim număr egal 2) sunt considerate numere pare, nu?

Vom aplica aceeași logică. Consultați codul de mai jos pentru referința dvs.

Cod:

 Sub ForwardStep () Pentru i = 2 până la 20 Pasul 2 celule (i, 1). Valor = i Următorul i Încheiere Sub 

Pentru valorile care încep de la 2, această buclă permite imprimarea a 2, 4, 6, 8 … 20 în celulele ulterioare Excel. Pasul 2 a dat în mod explicit, astfel încât pornind de la numărul 2, codul va sări la următorul număr cu pasul 2 (adică 4 va fi tipărit) și așa mai departe. Acest proces va continua până când 20 are loc într-o celulă. Imediat ce apare 20 într-o celulă, bucla va fi încheiată automat.

Rulați codul folosind tasta F5 sau manual. Deci, puteți vedea ieșirea ca mai jos.

Tip # 3 - VBA pentru buclă cu pas înapoi

La fel ca pentru bucla cu pas înainte, putem folosi pentru buclă cu pas înapoi. De exemplu, ce se întâmplă dacă ne setăm pasul înapoi ca -2 și rulăm o buclă pentru valorile 20 până la 2?

Vom vedea cum funcționează.

cod:

 Sub BackwardStep () Pentru i = 20 până la 2 Pasul -2 Debug.Print i Next i End Sub 

După rularea codului, putem vedea ieșirea în Fereastra Imediată. Pentru a deschide Fereastra Imediată, apăsați Ctrl + G oriunde în Excel.

Deoarece am dat un punct de pornire al buclei ca 20 și punctul de terminare ca 2 cu pasul -2, bucla începe de la 20 și în pasul -2 trece la următorul număr care este -18 și așa mai departe. Imediat ce bucla atinge valoarea 2, aceasta se încheie automat, iar ultima valoare va fi tipărită ca 2.

Tipul # 4 - VBA cuibărit pentru buclă

Putem, de asemenea, bucla Nest theFor. Cu toate acestea, nu este recomandat să faceți cuibărirea aceleiași bucle mai mult decât de trei ori într-un cod (Poate fi considerată ca eroare în logică).

Vă rugăm să consultați codul de mai jos pentru cuibărit pentru buclă.

Cod:

 Sub NestedFor () Pentru i = 1 până la 10 Pentru j = 1 până la 2 celule (i, j) .Value = i * j Următorul j Următorul i End Sub 

În acest exemplu, la i = 1 și j = 1, macro pune valoarea lui i * j (1 * 1) în intersecția rândului i = 1 și coloanei j = 1 (adică celula A1) și merge pentru următoarea valoare a j (2) păstrând i = 1. În intersecția rândului i = 1 și a coloanei j = 2 (adică celula B1), macro introduce valoarea I * j (1 * 2). Loop ignoră următoarea valoare a lui j, deoarece j diferă doar de la 1 la 2 și trece la următoarea valoare a lui i.

Pentru i = 2 și j = 1, macro introduce valoarea i * j (2 * 1) în intersecția celui de-al doilea rând și coloana 1 (adică celula A2) și continuă. Până la intervalul i și j.

Rulați codul folosind tasta F5 sau manual, așa cum se arată în imaginea de mai jos. Deci, puteți vedea ieșirea ca mai jos.

Tip # 5 - VBA Faceți în timp ce bucla

În timp ce bucla este una dintre cele mai interesante bucle din VBA. Vă permite să verificați condiția și să scrieți ieșirea (DO), atunci când a fost îndeplinită o anumită condiție sau un set de condiții (sau condiția / condițiile sunt / sunt ADEVĂRATE).

Vedeți codul de mai jos:

Cod:

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

Această buclă funcționează ca mai jos:

Pentru valorile i de la 1 (i = 1 inițial) la 10, calculează, i * i (adică valoarea pătrată pentru fiecare valoare întreagă a i) și o introduce sub celula 1 până la 10. Rezultatul nu este altceva decât valorile pătrate ale numerelor întregi de la 1 la 10. Vă rugăm să aruncați o privire mai atentă Loop sub acest cod. Este obligatoriu să o adăugați, în caz contrar, sistemul va înregistra o eroare.

Rulați codul folosind tasta F5 sau manual. Deci, puteți vedea ieșirea ca mai jos.

Acestea sunt câteva dintre exemple de buclă VBA la care am încercat să am grijă în acest articol. Sper că va fi suficient de precis pentru a șterge anumite concepte.

Lucruri de amintit

  • În timp ce utilizați pentru bucla cu un pas înapoi, asigurați-vă că numărul dvs. de început trebuie să fie mai mare decât numărul final și invers.
  • În bucla Efectuare timp în timp, asigurați-vă că utilizați Loop pentru a închide acest lucru înainte de a încheia întregul cod VBA. În caz contrar, sistemul aruncă o eroare a compilatorului cu mesajul de eroare „Fă fără buclă”.

Puteți descărca acest șablon Excel bucle VBA aici - șablonul VBA Loops Excel

Articole recomandate

Acesta a fost un ghid pentru buclele Excel VBA. Aici am discutat Tipuri de bucle Excel VBA și cum să le utilizăm împreună cu câteva exemple practice și șablon Excel descărcabil. Puteți parcurge și alte articole propuse -

  1. Funcția VBA în Excel
  2. Funcția VBA VLOOKUP
  3. Comenzile rapide de la tastatură Excel
  4. Formula de procent Excel

Categorie: