Cum se folosește VBA pentru fiecare buclă? (cu exemple Excel)

Excel VBA pentru fiecare buclă

VBA pentru fiecare buclă parcurge toată colecția de obiecte sau obiecte și efectuează un set similar de activități. Va lua în considerare toate obiectele specificate disponibile și va efectua activități instruite în fiecare obiect.

În VBA, este obligatoriu să înțelegeți buclele. O buclă vă permite să efectuați același tip de activitate pentru multe celule sau obiecte din Excel. În articolul de astăzi, ne vom concentra asupra mecanismului Pentru fiecare buclă.

Sintaxă

Fiecare buclă poate parcurge toate colecțiile de obiecte sau obiecte. Un grup nu este altceva decât „Toate registrele de lucru deschise”, „Toate foile de lucru dintr-un registru de lucru”, „Toată colecția de forme și diagrame din registrul de lucru”.

Să ne uităm la sintaxă.

Pentru fiecare obiect din colecție Ce să facem? Următorul obiect

De exemplu, aveți 10 foi în registrul de lucru și doriți să ascundeți toate foile de lucru, cu excepția celei în care vă aflați. Vă puteți ascunde manual? Da, poți, dar dacă ai 100 de coli așa? Nu este o sarcină plictisitoare și consumatoare de timp? Puteți face acest lucru folosind pentru fiecare buclă.

Cum se folosește pentru fiecare buclă în VBA? (Exemple)

Exemplul # 1 - Introduceți același text în toate foile

Vom vedea cum să folosim FOR EACH în VBA cu un exemplu simplu. Să presupunem că aveți 5 foi de lucru într-un registru de lucru și doriți să inserați cuvântul „Bună ziua” în toate foile de lucru din celula A1.

Putem face acest lucru cu FOR EACH LOOP. Un lucru pe care trebuie să-l amintiți aici este că efectuăm această activitate în fiecare foaie de lucru, nu în aceeași foaie de lucru. Urmați pașii de mai jos pentru a scrie codul VBA.

Pasul 1: Porniți macrocomanda excel.

Cod:

Sub For_Each_Example1 () End Sub

Pasul 2: întrucât ne referim la foile de lucru, declarați variabila drept „Foaie de lucru”.

Cod:

Sub For_Each_Example1 () Dim Ws As Worksheet End Sub

Pasul 3: Acum, folosind PENTRU FIECARE LOOP, trebuie să trimitem fiecare foaie de lucru în registrul de lucru activ.

Cod:

Sub For_Each_Example1 () Dim Ws ca foaie de lucru pentru fiecare Ws din ActiveWorkbook. Foi de lucru Next Ws End Sub

Pasul 4: Acum, scrieți ce vrem să facem în fiecare foaie de lucru. În fiecare foaie de lucru, trebuie să punem cuvântul „Bună ziua” în celula A1.

Cod:

Sub For_Each_Example1 () Dim Ws Ca foaie de lucru pentru fiecare Ws din ActiveWorkbook.Whesheets Ws.Range ("A1"). Value = "Hello" Next Ws End Sub

Pasul 5: Acum executați manual acest cod prin opțiune sau apăsați tasta de comandă rapidă F5. Nu contează câte foi aveți; va insera Cuvântul „Bună ziua” în toate foile de lucru.

Exemplul nr. 2 - Ascundeți toate foile

După cum am spus mai devreme în postare, ce se întâmplă dacă aveți sute de foi de ascuns, cu excepția celei în care vă aflați. Folosind Pentru fiecare buclă, putem ascunde toate foile în Excel.

Pasul 1: Porniți macrocomanda cu numele dvs.

Cod:

Sub For_Each_Example2 () End Sub

Pasul 2: declarați variabila ca „ Ws”.

Cod:

Sub For_Each_Example2 () Dim Ws As Worksheet End Sub

Pasul 3: Acum, în fiecare foaie de lucru, ceea ce trebuie să faceți este să ascundeți foaia.

Cod:

Sub For_Each_Example2 () Dim Ws Ca foaie de lucru pentru fiecare Ws din ActiveWorkbook.Whesheets Ws.Visible = xlSheetVeryHidden Următorul Ws End Sub

Pasul 4: Dar dacă rulați codul de mai sus, acesta va încerca să ascundă toate foile, dar Excel are nevoie de cel puțin o foaie vizibilă. Deci, trebuie să spunem ce foaie să nu ascundem.

Cod:

Sub For_Each_Example2 () Dim Ws Ca foaie de lucru pentru fiecare Ws din ActiveWorkbook.Foarte de lucru Dacă Ws.Name "Main Sheet" Atunci Ws.Visible = xlSheetVeryHidden End Dacă următorul Ws End Sub

De simbol operatorul mijloacelor nu este egal în VBA .

So code says when you are looping through all the worksheets in the active workbook, hide only if the sheet name is not equal to the sheet name of Main Sheet.

This can be done by using the IF statement in VBA. Write the code as IF Ws.Name “Main Sheet” Then hide or if it is equal to the sheet name “Main Sheet,” then don’t hide.

Step 5: Now run the code using the F5 key or manually. Then, it will hide all the worksheets except the one named “Main Sheet.”

Example #3 - Unhide All the Sheets

We have seen how to hide all sheets except the one we are in. Similarly, we can unhide all the worksheets as well.

We need to change the code from xlSheetVeryHidden to xlSheetVisible.

Code:

Sub For_Each_Example3() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws End Sub

Here we don’t need the IF condition because we are unhiding all the sheets. If you don’t want to unhide any specific sheet, then you can use the IF condition and supply the sheet name.

Example #4 - Protect and UnProtect All the Sheets

Protect All Sheets: We can protect all the sheets in the workbook with just a piece of code. All the principle is the same only thing we need to do here is instead of Ws. Visible, we need to put the code Ws. Protect and type the password.

Code:

Sub For_Each_Example4() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Protect Password:="Excel@2019" Next Ws End Sub

Deprotejați toate foile: într-o notă similară, folosind VBA, putem de asemenea să ne protejăm toate foile protejate în registrul de lucru. Trebuie să punem cuvântul Unprotect și parola.

Cod:

Sub For_Each_Example6 () Dim Ws Ca foaie de lucru pentru fiecare Ws din ActiveWorkbook.Whesheets Ws.Unprotect Password: = "Excel @ 2019" Next Ws End Sub

Lucruri de amintit

  • Fiecare este pentru colectarea obiectelor.
  • Acesta va lua în considerare toate obiectele specificate în registrul de lucru specificat.
  • În timp ce declarăm variabila, avem nevoie la ce obiect ne referim, de exemplu, Foaie de lucru, Caiet de lucru, Grafic etc.

Articole interesante...