Hoe VBA voor elke lus te gebruiken? (met Excel-voorbeelden)

Excel VBA voor elke lus

VBA For Each Loop doorloopt de hele verzameling objecten of items en voert een vergelijkbare reeks activiteiten uit. Het houdt rekening met alle beschikbare gespecificeerde objecten en voert geïnstrueerde activiteit uit in elk object.

In VBA is het verplicht om de lussen te begrijpen. Met een lus kunt u dezelfde soort activiteit uitvoeren voor veel cellen of objecten in Excel. In het artikel van vandaag gaan we ons concentreren op het For Each Loop-mechanisme.

Syntaxis

For Each Loop kan de hele verzameling objecten of items doorlopen. Een groep is niets anders dan 'Alle geopende werkmappen', 'Alle werkbladen in een werkmap', 'Alle verzameling vormen en grafieken in de werkmap'.

Laten we eens kijken naar de syntaxis.

Wat te doen voor elk object in de verzameling? Volgende object

U heeft bijvoorbeeld 10 bladen in uw werkmap en u wilt alle werkbladen verbergen behalve degene waarin u zich bevindt. Kunt u deze handmatig verbergen? Ja, dat kan, maar wat als je 100 van zulke vellen hebt? Is dat geen vervelende en tijdrovende klus om te doen? U kunt dit doen met voor elke lus.

Hoe te gebruiken voor elke lus in VBA? (Voorbeelden)

Voorbeeld # 1 - Voeg dezelfde tekst in alle bladen in

We zullen zien hoe je FOR ELK in VBA kunt gebruiken met een eenvoudig voorbeeld. Stel dat u 5 werkbladen in een werkmap heeft en u wilt het woord "Hallo" invoegen in alle werkbladen in cel A1.

We kunnen dit doen met FOR ELKE LOOP. Een ding dat u hier moet onthouden, is dat we deze activiteit in elk werkblad uitvoeren, niet in hetzelfde werkblad. Volg de onderstaande stappen om de VBA-code te schrijven.

Stap 1: Start de Excel-macro.

Code:

Sub For_Each_Example1 () End Sub

Stap 2: Aangezien we naar de werkbladen verwijzen, declareert u de variabele als 'Werkblad'.

Code:

Sub For_Each_Example1 () Dim Ws As Worksheet End Sub

Stap 3: Nu, met FOR ELKE LOOP, moeten we elk werkblad in de actieve werkmap verwijzen.

Code:

Sub For_Each_Example1 () Dim Ws als werkblad voor elke Ws in ActiveWorkbook.Worksheets Next Ws End Sub

Stap 4: Schrijf nu op elk werkblad wat we willen doen. In elk werkblad moeten we het woord "Hallo" in cel A1 plaatsen.

Code:

Sub For_Each_Example1 () Dim Ws als werkblad voor elke Ws in ActiveWorkbook.Worksheets Ws.Range ("A1"). Value = "Hallo" Next Ws End Sub

Stap 5: Voer deze code nu handmatig uit via de optie of druk op sneltoets F5. Het maakt niet uit hoeveel vellen je hebt; het zal het woord "Hallo" in alle werkbladen invoegen.

Voorbeeld # 2 - Verberg alle bladen

Zoals eerder in het bericht is verteld, wat als u honderden bladen moet verbergen behalve degene waarin u zich bevindt. Met behulp van Voor elke lus kunnen we alle bladen in Excel verbergen.

Stap 1: Start de macro met uw naam.

Code:

Sub For_Each_Example2 () End Sub

Stap 2: Declareer de variabele als ' W'.

Code:

Sub For_Each_Example2 () Dim Ws As Worksheet End Sub

Stap 3: Nu, in elk werkblad, moet u het blad verbergen.

Code:

Sub For_Each_Example2 () Dim Ws als werkblad voor elke Ws in ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws End Sub

Stap 4: Maar als u de bovenstaande code uitvoert, zal het proberen alle bladen te verbergen, maar Excel heeft ten minste één blad zichtbaar nodig. We moeten dus vertellen welk blad we niet moeten verbergen.

Code:

Sub For_Each_Example2 () Dim Ws als werkblad voor elk Ws in ActiveWorkbook.Worksheets If Ws.Name "Main Sheet" Then Ws.Visible = xlSheetVeryHidden End If Next Ws End Sub

Het operatorsymbool betekent niet gelijk aan in 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

Beveiliging van alle bladen opheffen: op dezelfde manier kunnen we met VBA ook de beveiliging van alle bladen in de werkmap opheffen. We moeten het woord Unprotect en wachtwoord plaatsen.

Code:

Sub For_Each_Example6 () Dim Ws als werkblad voor elk Ws in ActiveWorkbook.Worksheets Ws.Unprotect Password: = "Excel @ 2019" Next Ws End Sub

Dingen om te onthouden

  • Elk is voor het verzamelen van objecten.
  • Het houdt rekening met alle opgegeven objecten in de opgegeven werkmap.
  • Bij het declareren van de variabele moeten we naar welk object we verwijzen, bijvoorbeeld werkblad, werkboek, diagram, enz.

Interessante artikelen...