Doriți să automatizați sarcinile repetitive în Excel folosind VBA? Aflați cum să utilizați bucla For Each pentru a manipula eficient datele din foile de calcul.

Buclele și VBA merg împreună, și pentru un motiv întemeiat. Când aveți de-a face cu obiecte Microsoft Office, cum ar fi registrele de lucru, foile de lucru și intervalele, buclele vă pot ajuta să comutați între fiecare dintre ele cu relativă ușurință.

În timp ce mai mult sau mai puțin toate buclele VBA funcționează bine cu obiecte, bucla „pentru fiecare” este una dintre cele mai bune opțiuni pentru a lucra cu colecții de obiecte. Dacă sunteți nou în Excel VBA și doriți să stăpâniți pentru fiecare buclă, puteți învăța rapid din unele dintre aceste exemple. Iată tot ce trebuie să știi despre această buclă prin excelență.

Pentru sintaxa fiecărei bucle

Sintaxa pentru fiecare buclă este destul de similară cu bucla obișnuită din Excel VBA. Iată sintaxa:

Pentru fiecare nume_variabilă din colecția_obiect

[afirmație]

[afirmație]

[afirmație]

Următorul nume_variabilă

Bucla începe cu cuvântul cheie „pentru fiecare”; puteți folosi orice nume de variabilă, urmat de colecția de obiecte. Obiectul pentru fiecare buclă poate fi celule, intervale, foi și chiar registre de lucru. Aceasta este frumusețea acestei bucle; vă oferă flexibilitatea de a lucra cu diferite colecții Excel.

Bucla circulă prin fiecare valoare de colecție și stochează referința în numele variabilei definite. După execuție, VBA execută instrucțiunile stocate în buclă și trece la următorul obiect din colecție ( Următorul cuvântul cheie este util aici). Să înțelegem structura codului cu un exemplu de bază.

Cum se utilizează pentru fiecare buclă în Excel VBA

Să presupunem că doriți să imprimați un număr în celulele de la A1 la A10. Cea mai bună abordare este să utilizați pentru fiecare buclă cu funcția interval și să lăsați codul să facă ceea ce este necesar. Iată cum puteți face această sarcină simplă:

  1. Deschideți editorul de cod VBA apăsând Alt + F11.
  2. Inserați un modul făcând clic pe Modul opțiunea din cadrul Introduce fila.
  3. Creați o subrutină folosind comanda sub() din fereastra modulului editor de cod. Asigurați-vă că atribuiți un nume semnificativ sub-rutinei. Pentru acest exemplu, puteți folosi numele for_each_loop.

Acum că elementele de bază sunt îndepărtate, este timpul să începeți să scrieți codul. În cadrul subrutinei, tastați următoarele comenzi:

Celula slabă la fel de gamă

Pentru fiecare celulă în cearșafuri („Foaie 1”).Gamă(„A1:A10”)

celulă.valoare = 10

Următoarea celulă

Când se execută codul, c variabila va stoca valoarea lui A1. Apoi, pe măsură ce trece la instrucțiunea din buclă, evaluează comanda și introduce o valoare de 10 în celula definită, adică celula A1.

În cele din urmă, pe măsură ce trece la cuvântul cheie Următorul, se trece la următoarea valoare, adică celula A2. Bucla rulează până ajunge la celula A10. Aceasta este rezultatul final:

Utilizarea buclei cu obiecte: celule, foi și registre de lucru

Excel are trei tipuri principale de obiecte cu care lucrați în mod regulat. Acestea sunt celule, foi și registre de lucru. Iată cum puteți utiliza bucla cu toate cele trei tipuri de obiecte.

Lucrul împreună cu celule și bucle

Să presupunem că doriți să adăugați o valoare și unele condiții de formatare la o serie de celule din Sheet1. Ca prim pas, trebuie să definiți condițiile din buclă, urmate de comenzile de formatare.

Introduceți următorul cod într-o subrutină.

Sub for_each_loop()

Dim c La fel de Gamă

Pentru fiecare c în foi („Foaie 1”).Gamă(„A1:A10”)

Cu c

.Valoare = 10

.Font. Culoare = vbRed

.Font. Bold = Adevărat

.Font. Strikethrough = Adevărat

SfârşitCu

Următorul c

Sfârşit Sub

The cu funcția este utilă atunci când executați mai multe funcții cu un obiect specific. Deoarece doriți să efectuați o serie de sarcini cu variabila c, le puteți combina pe toate folosind funcția a with..end with.

Bucla echivalează valoarea lui c cu valoarea fiecărei celule și introduce valoarea ca 10. În plus, schimbă culoarea celulei în roșu, pune valoarea îngroșată și o trece. Odată ce parcurge toți pașii, se trece la următoarea valoare definită din interval.

Utilizarea buclei pentru a controla foile

Similar cu exemplul de mai sus, puteți utiliza pentru fiecare buclă pentru a controla foile. Ce zici de schimbarea numelui Sheet1 în Sheet3 folosind VBA?

Puteți folosi următorul cod pentru a redenumi o foaie de lucru existentă în Excel folosind VBA:

Sub for_each_loop_sheets()

PentruFiecareshtÎnAcest caiet de lucru.Cearşafuri

Dacă sht. Nume = „Foaie 1” Apoi

sht. Nume = "Foaie 3"

SfârşitDacă

Următorul sht

Sfârşit Sub

Codul parcurge fiecare foaie din registrul de lucru și verifică numele fiecărei foi. Dacă întâlnește numele Sheet1, îl schimbă în Sheet3. Progresează prin foile rămase, dacă există, în registrul de lucru. Odată ce execuția codului ajunge la ultima foaie, iese din buclă și din subrutină.

Printre alte utilizări comune, puteți îmbina mai multe foi de lucru folosind VBA și actualizați conținutul într-o singură foaie folosind bucle.

Comutați printre registrele de lucru cu bucla

În cele din urmă, puteți folosi pentru fiecare buclă pentru a comuta între diferite registre de lucru și pentru a efectua sarcini specifice. Să demonstrăm această funcție cu un exemplu.

Puteți folosi comenzile VBA pentru a adăuga trei registre noi și pentru a le închide împreună pe toate pe cele deschise. Iată cum o poți face:

Sub loop_wrkbook()

Dim carte de lucru la fel de registrul de lucru

Caiete de lucru.Adăuga

Caiete de lucru.Adăuga

Caiete de lucru.Adăuga

Pentru fiecare carte de lucru din caietele de lucru

carte de lucru.Închide

Următoarea carte de lucru

Sfârşit Sub

Codul de mai sus va închide și registrul de lucru cu macrocomenzi; asigurați-vă că ați salvat codurile înainte de a rula acest cod.

Deoarece buclele au mai multe utilizări, puteți, de asemenea consolidați datele din mai multe registre de lucru într-un singur registru de lucru.

Utilizarea unei instrucțiuni IF imbricate cu bucla

La fel ca exemplul de mai sus, puteți utiliza o instrucțiune IF în buclă pentru a verifica condiții specifice. Să schimbăm culoarea de fundal a celulei în funcție de valorile celulei.

Există câteva numere aleatorii în celulele A1:A20. Puteți scrie o buclă pentru a parcurge fiecare celulă dată din interval; dacă valoarea celulei este mai mică de 10, culoarea celulei ar trebui să se schimbe în roșu. Dacă valoarea celulei depășește 10, aceasta ar trebui să devină verde. Utilizați următorul cod în acest scop:

Sub loop_w_if()

Dim c La fel de Gamă

Pentru fiecare c în foi („Foaie 4”).Gamă(„A1:A20”)

Dacăc.Valoare < 10 Apoi

c. Interior. ColorIndex = 3

Altfel: c. Interior. ColorIndex = 4

SfârşitDacă

Următorul c

Sfârşit Sub

Iată cum arată rezultatul:

Utilizarea buclelor în Excel VBA

Excel VBA nu este limitat doar la pentru fiecare buclă. Există o varietate de bucle utile care vă permit să efectuați diferite funcții cu ușurință. Renunțați la sarcinile obișnuite, manuale, deoarece buclele VBA precum bucla for, face while și face până intervin buclele pentru a vă ușura viața.