Dacă scrieți un program VBA și doriți să executați aceeași sarcină de mai multe ori, puteți face acest lucru folosind VBA pentru bucle. VBA este un limbaj de programare secvențial. Fiecare linie de cod se execută de sus în jos până când nu mai există linii de cod de citit. Dacă doriți să vă întoarceți și să efectuați o sarcină, atunci trebuie să forțați folosind codul macro. Obțineți rezultate cu buclă.
For Loop în VBA este unul dintre cele mai comune tipuri de bucle. Bucla For are două forme: For Next și For Each In Next. Bucla For este de obicei folosită pentru a vă deplasa secvențial printr-o listă de articole sau numere. Pentru a încheia bucla For în orice moment dat, putem folosi instrucțiunea exit. Pentru Buclă se va roti până când va îndeplini condiția finală. Odată ce condiția finală este îndeplinită, fluxul de programare va continua în jos, în direcția sa naturală.
Bucla For … Next are următoarea sintaxă: For counter = start_counter To end_counter 'Fă ceva aici (codul tău) Următorul contor
De fapt, creăm o buclă care utilizează variabile tejghea ca „păstrătorul timpului” buclei. L-am setat la o valoare egală cu start_counter la începutul buclei și apoi creșteți-o cu 1 în timpul fiecărei bucle până când îndeplinește condiția finală. Bucla va executa până la momentul în care valoarea fișierului tejghea devine egal cu end_counter. Bucla se execută pentru ultima dată când ambele valori de mai sus se potrivesc și apoi bucla se oprește.
Toate cele de mai sus ar putea fi confuze pentru unii oameni, așa că să ne pregătim și să începem să învățăm For Loop în excel cu câteva exemple.
- Creați un nou registru Excel, apoi salvați-l cu extensia .xlsm
- Pentru a lansa ecranul editorului Visual Basic, utilizați ALT + F11
- Introduceți un modul nou
- Copiați codul de mai jos în modulul standard VB
Bucla 1 (Afișarea numărului cu 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
Explicatie cod:
- Codul VBA are nevoie să atribuiți valoare StartNumber, unde EndNumber sunt variabile declarate ca numere întregi ca punct de plecare pentru bucla dvs.
- Aceste valori pot fi orice număr și avem EndNumber ca 5
- StartNumber este început la 1
- Pentru StartNumber = 1 To EndNumber înseamnă că codul va începe de la 1 (StartNumber) la 5 (EndNumber)
- MsgBox StartNumber & "is" & "Your StartNumber" va afișa următoarea casetă de mesaj
Bucla2 (valori de umplere)
Sub Buclă2 () „Umple celulele A1: A56 cu valorile lui X prin buclă” --- Comentariu „Crește valoarea lui X cu 1 în fiecare buclă” --- Comentează Dim X Ca întreg pentru X = 1 până la 56 Domeniu („A "& X) .Value = X Next X End Sub
Explicatie cod:
- Am atribuit X ca număr întreg
- Pentru X = 1 până la 56; aceasta va începe cu 1 și va continua până la 56 cu o creștere de 1 de fiecare dată
- Range ("A" & X) .Value = X; această linie va stoca valoarea lui X și va trece în intervalul A1 până la A56
Bucla3 (Umpleți celulele cu culoare de fundal)
Sub Loop3 () „Umple celulele B1: B56 cu cele 56 de culori de fundal” --- Comentează Dim X Ca întreg pentru intervalul X = 1 până la 56 („B” și X). Selectați cu selecție.Interior .ColorIndex = X. = xlSolid End With Next X End Sub
Explicatie cod:
- Am atribuit X ca număr întreg
- Pentru X = 1 până la 56 va începe cu 1 și va continua până la 56 cu o creștere de 1 de fiecare dată
- Gama ("B" & X). Selectați; această linie va stoca valoarea lui X și selectează celula B1 până la B56
- Următoarele 4 linii, adică With Selection.Interior va selecta colorindex interior și va lua valoarea din X a acelui colorindex astfel încât 1 să aparțină culorii negru; 2 aparține culorii albe; 3 pentru roșu și așa mai departe
Bucla 4 (Valori de umplere cu increment de 2)
În mod implicit, valoarea Step este înainte 1, cu toate acestea poate fi setată la un număr mai mare de 1.
Sub Loop4 () „Umple fiecare a doua celulă din C1: C50 cu valori de X” --- Comentează Dim X Ca întreg pentru X = 1 până la 50 Pasul 2 Gama („C” și X). Valoare = X Următorul X Sfârșit Sub
Explicatie cod:
- Am atribuit X ca număr întreg
- Pentru X = 1 până la 50 Pasul 2; aceasta va începe cu 1 în X până la 50 cu o creștere de 2 de fiecare dată
- Range ("C" & X) .Value = X; această linie va stoca valoarea lui X și va trece în intervalul C1 până la C50
Bucla 5 (VBA pentru bucla inversă cu instrucțiuni STEP)
Nu este necesar ca contorul din bucla For să se deplaseze numai de la valori mici la valori mai mari; în schimb, bucla For poate rula înapoi, prea adică valori mari sau mai mici.
Chiar dacă valoarea Step este înainte 1 în mod implicit, totuși, ea poate fi setată la un număr în ordine inversă.
Sub Loop5 () „Umple celulele din D1: D50 cu valori de X” --- Comentariu „În acest caz X scade cu 1” --- Comentariu Dim X Ca întreg, Rând Ca întreg Rând = 1 Pentru X = 50 până la 0 Pasul -1 Interval („D” și Rând). Valoare = Rând X = Rând + 1 Următor X Finalizare secundară
Explicatie cod:
- Am atribuit X & Row ca număr întreg
- Rândul conține valoarea 1
- Pentru X = 50 la 0 Pasul -1; aceasta va începe de la 50 cu scăderea cu 1 în X până la 0
- Gama („D” & Row) .Value = X; această linie va stoca valoarea lui X și va trece în intervalul D1 până la D50
Bucla 6 (Umple fiecare a doua celulă în Reverse cu STEP-2)
În exemplul de mai sus pentru buclă, putem folosi Pasul și comanda pentru a vedea dacă bucla For funcționează în direcția înainte sau înapoi.
Sub Loop6 () „Umple fiecare a doua celulă din E1: E100 cu valori de X” --- Comentariu „În acest caz X scade cu 2” --- Comentariu Dim X Ca întreg, Rând Ca rând întreg = 1 Pentru X = 100 Până la 0 Pasul -2 Interval („E” și Rând). Valoare = Rând X = Rând + 2 Următorul X End Sub
Explicatie cod:
- Am atribuit X & Row ca număr întreg
- Rândul conține valoarea 1
- Pentru X = 100 la 0 Pasul -2; acest lucru va începe de la 100 cu scăderea cu 2 în X până la 0
- Gama („E” & Rând) .Value = X; această linie va stoca valoarea lui X și va trece în intervalul E1 la E100
Bucla 7 (Pentru bucla cu condiție IF: Umple celulele începând de la celula specifică)
Aceasta va umple celulele din celula F11 cu valoarea 11 până când X îndeplinește condiția IF
Sub Loop7 () 'Începe să umple celulele F11: F100 cu valori de X' --- Comentariu 'Aceasta va ieși din buclă după 50' --- Comentariu Dim X Ca întreg pentru X = 11 până la 100 Interval ("F" & X) .Value = X Dacă X = 50 Apoi MsgBox („Bye Bye”) Ieșiți pentru End If Next X End Sub
Explicatie cod:
- Am atribuit X ca număr întreg
- Pentru X = 11 până la 100; va începe de la 11 cu creșterea cu 1 în X până când se va îndeplini condiția
- Range ("F" & X) .Value = X; această linie va stoca valoarea lui X și va trece în intervalul F11 până când se va îndeplini condiția
- După introducerea valorii 50 în celula F50, va fi afișată următoarea casetă de mesaj
Concluzie: Cu cele 7 exemple de mai sus, putem aplica bucla For în partea noastră obișnuită sau în orice parte de automatizare.
Dacă ți-au plăcut blogurile noastre, împărtășește-le prietenilor tăi de pe Facebook. Și, de asemenea, ne puteți urmări pe Twitter și Facebook.
Ne-ar plăcea să aflăm de la dvs., să ne anunțați cum putem îmbunătăți, completa sau inova munca noastră și să o îmbunătățim. Scrieți-ne pe site-ul de e-mail