Hur använder jag VBA för varje slinga? (med Excel-exempel)

Innehållsförteckning

Excel VBA för varje slinga

VBA för varje slinga går igenom hela samlingen av objekt eller föremål och utför en liknande uppsättning aktiviteter. Den tar hänsyn till alla tillgängliga specificerade objekt och utför instruktioner i varje objekt.

I VBA är det obligatoriskt att förstå looparna. En slinga gör att du kan utföra samma typ av aktivitet för många celler eller objekt i excel. I dagens artikel ska vi koncentrera oss på For Every Loop-mekanismen.

Syntax

För varje slinga kan du gå igenom hela uppsättningen av objekt eller objekt. En grupp är inget annat än "Alla öppnade arbetsböcker", "Alla kalkylblad i en arbetsbok", "All samling av former och diagram i arbetsboken."

Låt oss titta på syntaxen.

För varje objekt i samlingen Vad ska jag göra? Nästa objekt

Du har till exempel tio ark i din arbetsbok och du vill dölja alla kalkylblad utom den du befinner dig i. Kan du dölja manuellt? Ja, det kan du, men tänk om du har 100 ark så här? Är det inte en tråkig och tidskrävande uppgift att göra? Du kan göra detta med varje slinga.

Hur använder jag för varje slinga i VBA? (Exempel)

Exempel nr 1 - Infoga samma text i alla ark

Vi kommer att se hur man använder FOR EACH i VBA med ett enkelt exempel. Antag att du har 5 kalkylblad i en arbetsbok och att du vill infoga ordet "Hej" i alla kalkylblad i cell A1.

Vi kan göra det med FOR EACH LOOP. En sak du behöver komma ihåg här är att vi utför denna aktivitet i varje kalkylblad, inte i samma kalkylblad. Följ stegen nedan för att skriva VBA-koden.

Steg 1: Starta Excel-makrot.

Koda:

Sub For_Each_Example1 () Avsluta Sub

Steg 2: Eftersom vi hänvisar till kalkylbladet, förklara variabeln som "Kalkylblad."

Koda:

Sub For_Each_Example1 () Dim Ws As Worksheet End Sub

Steg 3: Nu, med hjälp av FÖR VARJE LOPPA, måste vi hänvisa varje kalkylblad i den aktiva arbetsboken.

Koda:

Sub For_Each_Example1 () Dim Ws som kalkylblad för varje Ws i ActiveWorkbook.Worksheets Nästa Ws End Sub

Steg 4: Skriv nu vad vi vill göra i varje kalkylblad. I varje kalkylblad måste vi lägga ordet "Hej" i cell A1.

Koda:

Sub For_Each_Example1 () Dim Ws som kalkylblad för varje Ws i ActiveWorkbook.Worksheets Ws.Range ("A1"). Värde = "Hej" Nästa Ws End Sub

Steg 5: Kör nu den här koden manuellt genom alternativet eller tryck på genväg F5. Det spelar ingen roll hur många ark du har; det infogar ordet "Hej" i alla kalkylblad.

Exempel # 2 - Dölj alla ark

Som sagt tidigare i inlägget, vad händer om du har hundratals ark att gömma förutom det du befinner dig i. Användning För varje slinga kan vi dölja alla ark i Excel.

Steg 1: Starta makrot med ditt namn.

Koda:

Sub For_Each_Example2 () End Sub

Steg 2: Förklara variabeln som " Ws."

Koda:

Sub For_Each_Example2 () Dim Ws As Worksheet End Sub

Steg 3: Nu, i varje kalkylblad, behöver du dölja arket.

Koda:

Sub For_Each_Example2 () Dim Ws som kalkylblad för varje Ws i ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Nästa Ws End Sub

Steg 4: Men om du kör koden ovan kommer den att försöka dölja alla ark, men excel behöver minst ett ark synligt. Så vi måste berätta vilket ark som inte ska döljas.

Koda:

Sub For_Each_Example2 () Dim Ws som kalkylblad för varje Ws i ActiveWorkbook.Worksheets If Ws.Name "Main Sheet" Then Ws.Visible = xlSheetVeryHidden End If Next Ws End Sub

De operatörs symbol medel inte lika i 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

Avskydda alla ark: På en liknande anteckning, med hjälp av VBA, kan vi också avskydda alla ark som är skyddade i arbetsboken. Vi måste sätta ordet Unprotect och lösenord.

Koda:

Sub For_Each_Example6 () Dim Ws som kalkylblad för varje Ws i ActiveWorkbook.Worksheets Ws.Unprotect Password: = "Excel @ 2019" Nästa Ws End Sub

Saker att komma ihåg

  • Var och en är för insamling av objekt.
  • Den tar hänsyn till alla de angivna objekten i den angivna arbetsboken.
  • Medan vi deklarerar variabeln, behöver vi till vilket objekt vi hänvisar till - till exempel arbetsblad, arbetsbok, diagram etc.

Intressanta artiklar...