Excel VBA per ogni ciclo

La parola chiave "Each" viene utilizzata in VBA insieme alla funzione "For". Significa che per ogni entità in un array o intervallo ripetere il processo in for loop. Fondamentalmente, non inseriremo l'intervallo di passi, cioè da 1 a 5 o da 1 a 10, invece lo inseriamo semplicemente come mostrato nella sintassi seguente.

Sintassi:

Per ogni nome-oggetto nell'intervallo

Nota: è necessario disporre della scheda Sviluppatore nel foglio di lavoro Excel.

Se non vedi la scheda "Sviluppatore" in Excel, fai riferimento ai passaggi seguenti.

Passaggio 1: fare clic su Opzione file .

Passaggio 2: viene visualizzato il menu a discesa, fare clic sulla scheda Opzioni .

Passaggio 3: Dopo aver fatto clic su "Opzioni", viene visualizzata una finestra di dialogo come mostrato di seguito e fare clic sull'opzione Personalizza barra multifunzione .

Passaggio 4: quando trasciniamo verso il basso le opzioni di personalizzazione della barra multifunzione, troveremo un'opzione per lo sviluppatore che dobbiamo selezionare quella casella che ci consentirà di utilizzare VBA in Excel.

Come utilizzare per ogni loop in VBA?

Di seguito sono riportati i diversi esempi da utilizzare per ogni ciclo in Excel utilizzando il codice VBA.

Puoi scaricare questo VBA per ogni modello di Excel di loop qui - VBA per ogni modello di Excel di loop

Excel VBA per ogni ciclo - Esempio n. 1

Prenderemo un semplice esempio di For Each Loop in VBA. Supponiamo che di seguito sia l'insieme di dati in VBA.

Seguire i passaggi seguenti per utilizzare For Each Loop in Excel VBA.

Passaggio 1: fare clic sulla scheda "Sviluppatore" e quindi fare clic sull'opzione "Visual Basic" sul lato sinistro (prima opzione) come mostrato di seguito.

Dopo aver fatto clic su di esso, viene visualizzata una nuova finestra come mostrato di seguito.

Noterai che contiene due schede sul lato sinistro, "Foglio1 (Foglio1)" e "Questo manuale". L'unica differenza è "Foglio1" quando si desidera eseguire il codice solo per questo particolare foglio e in "Questo manuale", è possibile scrivere un codice ed eseguire che può essere applicato per l'intera cartella di lavoro Excel.

Passaggio 2: fai doppio clic su "Foglio1 (Foglio1) e vedrai una schermata vuota in cui è necessario scrivere il codice. Dai un nome al sottoinsieme creato. Qui abbiamo dato il nome come "Sub For_Each_Ex1 ()" come mostrato nello screenshot qui sotto.

Codice:

 Sub For_Each_Ex1 () End Sub 

Questo è il modo in cui creiamo un sottoinsieme e appare automaticamente “End Sub”. Questa è la funzionalità predefinita di Excel. Se “End Sub” non viene visualizzato, il codice non verrà eseguito e verrà generato un errore.

Passaggio 3: dichiareremo le variabili come intervallo.

Codice:

 Sub For_Each_Ex1 () Dim Guadagna, Range1 Come intervallo fine sub 

Qui abbiamo dichiarato due variabili, "Guadagna" che useremo con For Each e "Range1" come intervallo del set di dati.

Passo 4: Ora, fisseremo un intervallo, cioè un intervallo di dati su cui dobbiamo lavorare usando la parola chiave "Set" come mostrato di seguito.

Codice:

 Sub For_Each_Ex1 () Dim Guadagna, Range1 Come Range Set Range1 = Range ("A1: A10") End Sub 

Qui abbiamo corretto "Range1" come da range celle da A1 a A10, che è il nostro set di dati.

Passaggio 5: ora eseguiremo il ciclo For usando ogni parola chiave.

Codice:

 Sub For_Each_Ex1 () Dim Guadagna, Range1 Come Range Set Range1 = Range ("A1: A10") Per ogni guadagno in Range1 End Sub 

Qui, per ogni valore nell'intervallo, Guadagna otterrà un valore assegnato poiché il ciclo For viene eseguito passo dopo passo.

Passaggio 6: ora utilizzeremo la parola chiave "Msgbox" per visualizzare ciascuna voce della riga nell'intervallo assegnato.

Codice:

 Sub For_Each_Ex1 () Dim Guadagna, Range1 Come Range Set Range1 = Range ("A1: A10") Per ogni guadagno in Range1 MsgBox Guadagna Valore finale 

Qui "Earn.value" visualizzerà il valore nella cella, cioè a partire dalla prima cella dell'intervallo.

Step 7: Ora, vogliamo eseguire il valore successivo nell'intervallo di celle indicato, quindi, dobbiamo usare la parola chiave "Next" nel codice. Ciò contribuirà a procedere ulteriormente nell'intervallo e visualizzare ciascuna entità nell'intervallo di celle una alla volta.

Codice:

 Sub For_Each_Ex1 () Dim Guadagna, Range1 Come Range Set Range1 = Range ("A1: A10") Per ogni guadagno in Range1 MsgBox Earn.Value Next Guadagna End Sub 

Passaggio 8: eseguire il codice premendo F5 o il pulsante Esegui e vedere l'output.

Nel momento in cui viene eseguita la riga di codice "Next Earn", "Earn.value" verrà assegnato con il valore di cella successivo nell'intervallo. Uno per uno, fare clic su "OK" e continuerà a visualizzare ciascun valore nell'intervallo fino a quando l'intervallo di valori non è terminato.

Excel VBA per ogni ciclo - Esempio n. 2

Faremo un altro esempio in cui mostreremo il nome di ciascun foglio in un file Excel. Supponiamo di avere fogli denominati come di seguito nel file Excel:

Poiché notiamo che ci sono circa 5 fogli nel file Excel e dobbiamo visualizzare il nome di ciascuno per uno.

Scriveremo ed eseguiremo il codice nella sezione "ThisWorkbook" come evidenziato nel riquadro rosso sotto:

Fare doppio clic su di esso e mentre appare il riquadro della finestra e iniziare a scrivere il codice al suo interno. Seguire i passaggi seguenti per utilizzare Per ogni ciclo in Excel VBA:

Passaggio 1: scriveremo il codice assegnando un nome di sottoinsieme come mostrato di seguito.

Codice:

 Nome pagina secondaria () End Sub 

Passaggio 2: Inoltre, possiamo iniziare direttamente a scrivere l'istruzione del ciclo "For" senza dichiarare la variabile come mostrato di seguito.

Codice:

 Sottotitolo () per ogni sht in Application.Sheets End Sub 

Qui "sht" è la nostra variabile1 che per impostazione predefinita viene dichiarata e "Application.sheets" indica che nel file si considerano tutti i fogli. Application.fucntion specifica che possiamo aggiungere qualsiasi caratteristica o funzione o strumento Excel da considerare durante l'esecuzione del codice.

Passaggio 3: Ora inseriremo la sintassi della finestra di messaggio e insieme ad essa aggiungeremo la sintassi per visualizzare il nome del foglio come mostrato di seguito:

Codice:

 Nome pagina secondaria () per ogni sht in Application.Sheets MsgBox "Il nome del foglio è:" & sht.Name End Sub 

Qui l'affermazione che vorremmo visualizzare è "Il nome del foglio è:" e quindi digitiamo una e commerciale (&) che concatena la riga di codice e quindi digitiamo "sht.Name", cioè selezionerà il foglio a partire dal primo foglio e visualizzare il nome.

Passaggio 4: ora, è necessario ripetere la procedura per visualizzare il nome di ciascun foglio. Quindi, utilizzeremo "Next sht" come mostrato di seguito:

Codice:

 Nome pagina secondaria () per ogni sht in Application.Sheets MsgBox "Il nome del foglio è:" & sht.Name Next sht End Sub 

"Next sht" lo farà sapere al sistema, considera il foglio successivo e visualizzerà il suo nome per ulteriori esecuzioni.

Passaggio 6: eseguire il codice premendo F5 o il pulsante Esegui e vedere l'output.

Una volta, fai clic su "OK" e il codice verrà eseguito ulteriormente, verrà visualizzato il nome del foglio successivo. Il codice verrà eseguito fino a quando non saranno più visualizzati altri fogli.

Excel VBA per ogni ciclo - Esempio n. 3

Facciamo ora un esempio in cui dobbiamo sommare tutti i valori in un dato set di dati o in un array. Supponiamo di seguito l'insieme di dati :.

Seguire i passaggi seguenti per utilizzare Per ogni ciclo in Excel VBA:

Passaggio 1: dichiarare innanzitutto il nome del sottoinsieme come "eachadd ()" come mostrato di seguito.

Codice:

 Sub eachadd () End Sub 

Passo 2: Ora, dichiareremo le variabili necessarie, una come numero intero chiamato "totale" in cui continuiamo a sommare i valori delle celle uno per uno e fisseremo un intervallo di celle che contiene valori che dobbiamo aggiungere.

Codice:

 Sub eachadd () Dim totale come intero Dim intervallo1 come intervallo Fine sott 

Passaggio 3: Dopo aver dichiarato la variabile e l'intervallo, è necessario correggere l'intervallo da utilizzare per il loop. Dovremo correggere questo intervallo da A1 a A10 celle usando la parola chiave "Set" come mostrato di seguito:

Codice:

 Sub eachadd () Dim totale come intero Intervallo dim1 Come intervallo Set Range1 = Range ("A1: A10") End Sub 

Passaggio 4: Ora possiamo iniziare direttamente a utilizzare la funzione ciclo For e dichiarare direttamente la variabile. Qui, stiamo usando "add1" come variabile e per impostazione predefinita sarà dichiarato dal sistema.

Codice:

 Sub eachadd () Dim totale Come intero Dim Range1 Come intervallo Set Range1 = Range ("A1: A10") Per ogni aggiunta1 In Range1 End Sub 

Passaggio 5: aggiungere ciascuna entità nell'intervallo uno per uno e nella variabile dichiarata "totale". Per impostazione predefinita, il valore di "totale" inizialmente è zero. E abbiamo bisogno di aggiungere uno per uno il valore delle celle e di nuovo quella somma deve aggiungere di nuovo in "totale".

Codice:

 Sub eachadd () Dim totale come intero Intervallo dim1 Come intervallo Set Range1 = Range ("A1: A10") Per ogni add1 In Range1 totale = totale + add1.Valore valore secondario 

L'istruzione precedente viene eseguita da destra a sinistra, ovvero "add1.value" è il primo valore di cella e lo aggiunge a "total" che è zero. Quindi, la somma sarebbe 0 + 1 che è 1. E quella somma come 1 andrebbe in "totale" prima del segno "=". Questo è un vantaggio poiché la formula viene eseguita da sinistra a destra.

Passaggio 6: ora aggiungere "Next add1" che ora aiuterà a considerare il valore della cella successiva dell'intervallo di dati e aggiungere quel valore nella variabile "total" come mostrato di seguito.

Codice:

 Sub eachadd () Dim totale Come intero Dim Range1 Come intervallo Set Range1 = Range ("A1: A10") Per ogni add1 In Range1 totale = total + add1.Value Next add1 End Sub 

Passaggio 6: premere "F8" per eseguire il codice da ciascuna riga. Inoltre, possiamo vedere il valore di "totale" nello screenshot qui sotto.

Allo stesso modo, fino a quando l'intervallo di celle non supera, per loop continuerà a eseguire questa somma di un array.

Passaggio 7: ora utilizzeremo la parola chiave "Msgbox".

Codice:

 Sub eachadd () Dim totale Come intero Dim Intervallo1 Come intervallo Set Range1 = Range ("A1: A10") Per ogni add1 In Range1 totale = totale + add1.Valore Prossimo add1 MsgBox "Riepilogo finale:" & totale Sottotitolo 

Passaggio 8: eseguire il codice premendo F5 o il pulsante Esegui e vedere l'output.

Cose da ricordare

  • La parola chiave "Each" viene utilizzata la maggior parte delle volte solo in caso di utilizzo della funzione VBA For Loop. Altrimenti, ha un utilizzo limitato in Excel VBA.
  • Il vantaggio per la parola chiave "Each" è solo che non abbiamo dichiarato passaggi come da 1 a x nell'istruzione "For".

Articoli consigliati

Questa è una guida a VBA per ogni loop. Qui discutiamo come usare For Each Loop in Excel usando il codice VBA insieme ad esempi pratici e template Excel scaricabili. Di seguito sono riportati alcuni utili articoli di Excel relativi a VBA -

  1. VBA Do While Loop
  2. Cambio di colonne in Excel
  3. Pausa VBA per Loop
  4. Conta i nomi in Excel
  5. Come eseguire il codice VBA?

Categoria: