VBA voor elke lus

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 loops in VBA 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 verzameling 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 zich handmatig verbergen, ja dat kan, maar wat als u 100 van dergelijke bladen hebt, is dat niet saai en tijd -verslindende taak om te doen. U kunt dit voor elke lus gebruiken.

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

U kunt deze VBA voor elke lus-sjabloon hier downloaden - VBA voor elke lus-sjabloon

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 feitelijk 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 we FOR ELKE LOOP gebruiken, 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 bladen je hebt, het zal het woord "Hallo" in alle werkbladen invoegen.

Voorbeeld # 2 - Verberg alle bladen

Zoals eerder in de post is verteld, wat als je honderden bladen hebt om te verbergen behalve degene waarin je je 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 " Ws ".

Code:

 Sub For_Each_Example2 () Dim Ws As Worksheet End Sub 

Stap 3: Nu moet u in elk werkblad 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 nodig om zichtbaar te zijn. We moeten dus vertellen welk blad we niet moeten verbergen.

Code:

 Sub For_Each_Example2 () Dim Ws als werkblad voor elke 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 .

Dus de code zegt dat wanneer je door alle werkbladen in de actieve werkmap loopt, je alleen verbergt als de bladnaam niet gelijk is aan de bladnaam van het hoofdblad.

Dit kan worden gedaan door de IF-instructie in VBA te gebruiken. Schrijf de code als IF Ws.Name "Hoofdblad" Verberg dan of als het gelijk is aan de bladnaam "Hoofdblad", verberg dan niet.

Stap 5: Voer nu de code uit met de F5-toets of handmatig, het zal het hele werkblad verbergen, behalve het werkblad met de naam "Hoofdblad".

Voorbeeld # 3 - Maak alle bladen zichtbaar

We hebben gezien hoe we alle werkbladen kunnen verbergen, behalve degene waarin we ons bevinden. Op dezelfde manier kunnen we ook alle werkbladen zichtbaar maken.

We hoeven alleen de code van xlSheetVeryHidden te wijzigen in xlSheetVisible.

Code:

 Sub For_Each_Example3 () Dim Ws als werkblad voor elke 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 code 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 

Unprotect All the Sheets: On a similar note, using vba we can also unprotect all sheets that where protected in the workbook. We just need to put the word Unprotect and password.

Code:

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

Things to Remember

  • Each is for the collection of objects.
  • It will consider all the specified objects in the specified workbook.
  • While declaring the variable we need to which object we are referring to. For example Worksheet, Workbook, Chart, etc.