Come utilizzare VBA per ogni ciclo? (con esempi Excel)

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. 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. Un gruppo 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 desideri nascondere tutti i fogli di lavoro tranne quello in cui ti trovi. Puoi nasconderlo manualmente? Sì, puoi, ma cosa succede se hai 100 fogli così? Non è un compito noioso e che richiede tempo? Puoi farlo usando per ogni ciclo.

Come utilizzare For Each Loop in VBA? (Esempi)

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

Vedremo come usare FOR EACH in VBA con un semplice esempio. Supponi 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 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, dichiara 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, ciò 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 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 .

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

Rimuovi la protezione di tutti i fogli: in una nota simile, utilizzando VBA, possiamo anche rimuovere la protezione da tutti i fogli protetti nella cartella di lavoro. Dobbiamo mettere la parola Unprotect e password.

Codice:

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

Cose da ricordare

  • Ciascuno è per la raccolta di oggetti.
  • Considererà tutti gli oggetti specificati nella cartella di lavoro specificata.
  • Durante la dichiarazione della variabile, abbiamo bisogno di quale oggetto ci riferiamo, ad esempio foglio di lavoro, cartella di lavoro, grafico, ecc.

Articoli interessanti...