Vuoi automatizzare le attività ripetitive in Excel utilizzando VBA? Scopri come utilizzare il ciclo For Each per manipolare in modo efficiente i dati nei tuoi fogli di calcolo.
Loop e VBA vanno insieme, e anche per una buona ragione. Quando si ha a che fare con oggetti di Microsoft Office come cartelle di lavoro, fogli di lavoro e intervalli, i loop possono aiutarti a passare da uno all'altro con relativa facilità.
Mentre più o meno tutti i loop VBA funzionano bene con gli oggetti, il loop "for each" è una delle migliori opzioni per lavorare con le raccolte di oggetti. Se sei nuovo in Excel VBA e stai cercando di padroneggiare il ciclo for each, puoi imparare rapidamente da alcuni di questi esempi. Ecco tutto ciò che devi sapere su questo loop per eccellenza.
Per la sintassi di ogni ciclo
La sintassi for each loop è abbastanza simile al solito ciclo for in Excel VBA. Ecco la sintassi:
Per ogni nome_variabile in raccolta_oggetti
[dichiarazione]
[dichiarazione]
[dichiarazione]
Nome_variabile successivo
Il ciclo inizia con la parola chiave "for each"; è possibile utilizzare qualsiasi nome di variabile, seguito dalla raccolta di oggetti. L'oggetto nel ciclo for each può essere celle, intervalli, fogli e persino cartelle di lavoro. Tale è la bellezza di questo ciclo; ti dà la flessibilità di lavorare con diverse raccolte di Excel.
Il ciclo scorre ogni valore della raccolta e memorizza il riferimento nel nome della variabile definita. Dopo l'esecuzione, VBA esegue le istruzioni memorizzate all'interno del ciclo e passa all'oggetto successivo nella raccolta (the Prossimo la parola chiave è utile qui). Comprendiamo la struttura del codice con un esempio di base.
Come utilizzare il ciclo For Each in Excel VBA
Supponiamo di voler stampare un numero nelle celle da A1 a A10. L'approccio migliore è utilizzare il ciclo for each con la funzione range e lasciare che il codice faccia il necessario. Ecco come puoi eseguire questa semplice operazione:
- Aprire l'editor di codice VBA premendo Alt + F11.
- Inserire un modulo facendo clic su Modulo opzione all'interno del Inserire scheda.
- Crea una subroutine usando il comando sub() nella finestra del modulo dell'editor di codice. Assicurati di assegnare un nome significativo alla subroutine. Per questo esempio, puoi usare il nome per_ogni_ciclo.
Ora che le basi sono fuori mano, è ora di iniziare a scrivere il codice. All'interno della sub-routine, digita i seguenti comandi:
Cella oscura COME allineare
Per ogni cella In Fogli("Foglio1").Allineare("LA1:LA10")
cella.valore = 10
Prossima cella
Quando il codice viene eseguito, il C variabile memorizzerà il valore di A1. Successivamente, mentre passa all'istruzione all'interno del ciclo, valuta il comando e immette un valore pari a 10 nella cella definita, ovvero la cella A1.
Infine, mentre si sposta sulla parola chiave Next, passa al valore successivo, ovvero la cella A2. Il ciclo viene eseguito fino a raggiungere la cella A10. Questo è l'output finale:
Utilizzo del ciclo con oggetti: celle, fogli e cartelle di lavoro
Excel ha tre tipi di oggetti principali con cui lavori regolarmente. Queste sono celle, fogli e cartelle di lavoro. Ecco come puoi usare il ciclo con tutti e tre i tipi di oggetto.
Lavorare insieme con celle e loop
Supponiamo di voler aggiungere un valore e alcune condizioni di formattazione a un intervallo di celle in Foglio1. Come primo passo, devi definire le condizioni all'interno del ciclo, seguite dai comandi di formattazione.
Digita il seguente codice all'interno di una subroutine.
Sub per_ogni_ciclo()
Dim c COME Allineare
Per ogni c In fogli("Foglio1").Allineare("LA1:LA10")
Con C
.Valore = 10
.Font. Colore = vbRosso
.Font. Grassetto = VERO
.Font. Barrato = VERO
FINECon
Avanti c
FINE Sub
IL con La funzione è utile quando si eseguono più funzioni con un oggetto specifico. Poiché si desidera eseguire una serie di attività con la variabile c, è possibile combinarle tutte utilizzando una funzione with..end with.
Il ciclo equipara il valore di c con ogni valore di cella e inserisce il valore come 10. Inoltre, cambia il colore della cella in rosso, mette in grassetto il valore e lo barra. Una volta completati tutti i passaggi, passa al successivo valore definito nell'intervallo.
Utilizzo del ciclo per controllare i fogli
Analogamente all'esempio precedente, è possibile utilizzare il ciclo for each per controllare i fogli. Che ne dici di cambiare il nome di Foglio1 in Foglio3 usando VBA?
È possibile utilizzare il seguente codice per rinominare un foglio di lavoro esistente in Excel utilizzando VBA:
Sub for_each_loop_sheets()
PerOgnimerdaInQuesta cartella di lavoro.Fogli
Se merda. Nome = "Foglio1" Poi
merda. Nome = "Foglio3"
FINESe
Avanti merda
FINE Sub
Il codice scorre ogni foglio all'interno della cartella di lavoro e controlla il nome di ogni foglio. Se incontra il nome Foglio1, lo cambia in Foglio3. Avanza attraverso i fogli rimanenti, se presenti, all'interno della cartella di lavoro. Una volta che l'esecuzione del codice raggiunge l'ultimo foglio, esce dal ciclo e dalla subroutine.
Tra alcuni altri usi comuni, puoi unire più fogli di lavoro utilizzando VBA e aggiornare il contenuto in un singolo foglio utilizzando i loop.
Passa attraverso le cartelle di lavoro con il ciclo
Infine, puoi utilizzare il ciclo for each per passare da una cartella di lavoro all'altra ed eseguire attività specifiche. Dimostriamo questa funzione con un esempio.
Puoi utilizzare i comandi VBA per aggiungere tre nuove cartelle di lavoro e chiudere insieme tutte quelle aperte. Ecco come puoi farlo:
Sub loop_wrkbook()
Dim wrkbook COME cartella di lavoro
Cartelle di lavoro.Aggiungere
Cartelle di lavoro.Aggiungere
Cartelle di lavoro.Aggiungere
Per ogni cartella di lavoro nelle cartelle di lavoro
wrkbook.Vicino
Prossimo libro di lavoro
FINE Sub
Il codice sopra chiuderà anche la tua cartella di lavoro macro; assicurati di aver salvato i tuoi codici prima di eseguire questo codice.
Poiché i loop hanno molteplici usi, puoi anche consolidare i dati di più cartelle di lavoro in un'unica cartella di lavoro.
Utilizzo di un'istruzione IF annidata con il ciclo
Come nell'esempio precedente, puoi utilizzare un'istruzione IF all'interno del ciclo per verificare condizioni specifiche. Cambiamo il colore di sfondo della cella in base ai valori della cella.
Ci sono alcuni numeri casuali nelle celle A1:A20. Puoi scrivere un ciclo per scorrere ogni data cella nell'intervallo; se il valore della cella è inferiore a 10, il colore della cella dovrebbe diventare rosso. Se il valore della cella supera 10, dovrebbe diventare verde. Utilizzare il seguente codice per questo scopo:
Ciclo secondario_w_if()
Dim c COME Allineare
Per ogni c In fogli("Foglio4").Allineare("A1:A20")
SeC.Valore < 10 Poi
C. Interni. Indice colore = 3
Altro: C. Interni. Indice colore = 4
FINESe
Avanti c
FINE Sub
Ecco come appare l'output:
Utilizzo di loop in Excel VBA
Excel VBA non è limitato solo al ciclo for each. Ci sono una varietà di loop utili che ti consentono di eseguire diverse funzioni con facilità. Dì addio alle attività banali e manuali, poiché i loop di VBA come il ciclo for, do while e do until entrano in gioco i loop per semplificarti la vita.