VBA per ogni ciclo

Excel VBA per ogni ciclo

VBA For Each Loop esamina tutta la raccolta di oggetti o elementi ed esegue un insieme simile di attività. Prenderà in considerazione tutti gli oggetti specificati disponibili ed eseguirà attività istruite in ogni oggetto.

In VBA è obbligatorio comprendere i loop in VBA. Un ciclo ti consente di condurre lo stesso tipo di attività per molte celle o oggetti in Excel. Nell'articolo di oggi, ci concentreremo sul meccanismo For Each Loop.

Sintassi

For Each Loop può scorrere tutta la raccolta impostata di oggetti o elementi. Una raccolta non è altro che "Tutte le cartelle di lavoro aperte", "Tutti i fogli di lavoro in una cartella di lavoro", "Tutta la raccolta di forme e grafici nella cartella di lavoro".

Diamo un'occhiata alla sintassi.

Per ogni oggetto della collezione cosa fare? Oggetto successivo

Ad esempio, hai 10 fogli nella tua cartella di lavoro e vuoi nascondere tutti i fogli di lavoro tranne quello in cui ti trovi. Puoi nasconderti manualmente, sì puoi, ma cosa succede se hai 100 fogli come quello non è che un tempo noioso -consumante compito da fare. Puoi farlo usando per ogni ciclo.

Come utilizzare For Each Loop in VBA? (Esempi)

Puoi scaricare questo modello VBA per ogni ciclo qui - VBA per ogni modello di ciclo

Esempio n. 1: inserisci lo stesso testo in tutti i fogli

Vedremo come usare FOR EACH in VBA con un semplice esempio. Supponiamo di avere 5 fogli di lavoro in una cartella di lavoro e di voler inserire la parola "Ciao" in tutti i fogli di lavoro nella cella A1.

Possiamo farlo con FOR EACH LOOP. Una cosa che devi ricordare qui è che stiamo effettivamente eseguendo questa attività in ogni foglio di lavoro, non nello stesso foglio di lavoro. Segui i passaggi seguenti per scrivere il codice VBA.

Passaggio 1: avvia la macro di Excel.

Codice:

 Sub For_Each_Example1 () End Sub 

Passaggio 2: poiché ci riferiamo ai fogli di lavoro, dichiarare la variabile come "Foglio di lavoro".

Codice:

 Sub For_Each_Example1 () Dim Ws As Worksheet End Sub 

Passaggio 3: ora utilizzando FOR EACH LOOP è necessario fare riferimento a ciascun foglio di lavoro nella cartella di lavoro attiva.

Codice:

 Sub For_Each_Example1 () Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Next Ws End Sub 

Passaggio 4: ora scrivi cosa vogliamo fare in ogni foglio di lavoro. In ogni foglio di lavoro, dobbiamo inserire la parola "Hello" nella cella A1.

Codice: 

 Sub For_Each_Example1 () Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Range ("A1"). Value = "Hello" Next Ws End Sub 

Passaggio 5: ora esegui questo codice manualmente tramite l'opzione o premi il tasto di scelta rapida F5, non importa quanti fogli hai, inserirà la parola "Hello" in tutti i fogli di lavoro.

Esempio n. 2 - Nascondi tutti i fogli

Come detto in precedenza nel post, cosa succede se hai centinaia di fogli da nascondere tranne quello in cui ti trovi. Usando For each loop, possiamo nascondere tutti i fogli in Excel.

Passaggio 1: avvia la macro con il tuo nome.

Codice:

 Sub For_Each_Example2 () End Sub 

Passaggio 2: dichiara la variabile come " Ws ".

Codice:

 Sub For_Each_Example2 () Dim Ws As Worksheet End Sub 

Passaggio 3: ora in ogni foglio di lavoro quello che devi fare è nascondere il foglio.

Codice:

 Sub For_Each_Example2 () Dim Ws come foglio di lavoro per ogni Ws in ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws End Sub 

Passaggio 4: ma se esegui il codice sopra, proverà a nascondere tutti i fogli ma Excel ha bisogno di almeno un foglio per essere visibile. Quindi dobbiamo dire quale foglio non nascondere.

Codice:

 Sub For_Each_Example2 () Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If Ws.Name "Main Sheet" Then Ws.Visible = xlSheetVeryHidden End If Next Ws End Sub 

Il simbolo dell'operatore significa non uguale a in VBA .

Quindi il codice dice che quando si esegue il ciclo di tutti i fogli di lavoro nella cartella di lavoro attiva, nascondere solo se il nome del foglio non è uguale al nome del foglio del foglio principale.

Questa operazione può essere eseguita utilizzando l'istruzione IF in VBA. Scrivi il codice come IF Ws.Name "Main Sheet" Quindi nascondi o se è uguale al nome del foglio "Main Sheet", non nascondere.

Passaggio 5: ora esegui il codice utilizzando il tasto F5 o manualmente, quindi nasconderà tutto il foglio di lavoro tranne quello denominato "Foglio principale".

Esempio n. 3 - Scopri tutti i fogli

Abbiamo visto come nascondere tutti i fogli tranne quello in cui ci troviamo. Allo stesso modo, possiamo mostrare anche tutti i fogli di lavoro.

Abbiamo solo bisogno di cambiare il codice da xlSheetVeryHidden a xlSheetVisible.

Codice:

 Sub For_Each_Example3 () Dim Ws come foglio di lavoro per ogni 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.