VBA för varje slinga

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 i VBA. 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 samling är inget annat än "Alla öppnade arbetsböcker", "Alla kalkylblad i en arbetsbok", "Hela samlingen 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

Till exempel har du 10 ark i din arbetsbok och du vill dölja alla kalkylblad utom den du befinner dig i. Kan du dölja manuellt, ja du kan, men vad händer om du har 100 ark så är det inte tråkigt och tid -konsumerar uppgift att göra. Du kan göra detta med varje slinga.

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

Du kan ladda ner denna VBA för varje loopmall här - VBA för varje loopmall

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 detta med FOR EACH LOOP. En sak du måste komma ihåg här är att vi faktiskt 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 använder vi FÖR VARJE LOPPA vi måste 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ägsknappen F5, det spelar ingen roll hur många ark du har kommer att infoga 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 måste du dölja arket i varje kalkylblad.

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 ovanstående kod kommer den att försöka dölja alla ark men excel behöver minst ett ark för att vara synligt. Så vi måste berätta vilket ark vi inte ska dölja.

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 .

Så kod säger när du går igenom alla kalkylblad i den aktiva arbetsboken, dölj bara om arknamnet inte är lika med arknamnet på huvudarket.

Detta kan göras med IF-uttalandet i VBA. Skriv koden som IF Ws.Name "Main Sheet" Dölj sedan eller om det är lika med arkenamnet "Main Sheet", dölj inte.

Steg 5: Kör nu koden med F5-tangenten eller manuellt då kommer det att dölja hela kalkylbladet förutom det som heter "Main Sheet".

Exempel # 3 - Ta bort alla ark

Vi har sett hur man döljer alla ark utom det vi befinner oss i. På samma sätt kan vi också ta bort alla kalkylblad.

Vi behöver bara ändra koden från xlSheetVeryHidden till xlSheetVisible.

Koda:

 Sub For_Each_Example3 () Dim Ws som kalkylblad för varje Ws i 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.