Conosci già i cicli For Loop in VBA

...ma qual è il miglior modo di usarli?

La tua SCUOLA DI EXCEL

Centinaia di Trucchi e Suggerimenti per le tue necessità quotidiane

Il tuo Corso di Excel VBA. Le prime 4 lezioni GRATIS

LINK UTILI

ExcelMinds

Non lasciare che le nostre mail finiscano nella cartella dello SPAM
Aggiungi l’indirizzo del mittente ai tuoi contatti

CITAZIONE DELLA SETTIMANA

Serenamente contemplava la corrente del fiume; mai un'acqua gli era tanto piaciuta come questa, mai aveva sentito così forti e così belli la voce e il significato dell'acqua che passa. Gli pareva che il fiume avesse qualcosa di speciale da dirgli, qualcosa ch'egli non sapeva ancora, qualcosa che aspettava proprio lui.

Hermann Hesse

CONTENUTI AREA PREMIUM

Attualmente l’AREA PREMIUM include i seguenti contenuti:

  • 168 Tips and Tricks

  • 91 Formule avanzate spiegate passo-passo

  • 12 Templates pronti all’uso

  • 651 Esempi di Codice VBA e macro su casi reali

  • 34 Brevi Tutorial VBA

Ti ricordo lo sconto del 10% 

sull’abbonamento all’AREA PREMIUM*

(codice sconto NEWS10)

*Valido anche per l’Abbonamento Annuale, già notevolmente scontato

Ciao ExcelMinder,

stiamo pensando di organizzare dei corsi su Microsoft Excel fuori dall’orario lavorativo e la tua opinione è preziosa per noi. Ti chiediamo di dedicare pochi secondi per rispondere a questo sondaggio (due sole domande) e aiutarci ad organizzarli al meglio.

Parliamo dei cicli For Loop

Oggi inizieremo ad imparare uno degli argomenti più importanti per l'automazione di Excel: i cicli For di VBA. In realtà è uno dei primi argomenti che ho imparato da solo molti anni fa, e per una buona ragione. I cicli For consentono di scorrere rapidamente più elementi. Immagina di avere un foglio di calcolo con centinaia di righe di dati. Con un ciclo For, puoi scorrere ogni riga ed elaborare rapidamente i dati su ogni riga.

Introduzione ai cicli For

I cicli For in VBA sono uno dei concetti più potenti che puoi padroneggiare perché i cicli sono essenziali per automatizzare le attività ripetitive. Utilizzando i cicli, sarai in grado di scorrere l'intero foglio di calcolo in frazioni di secondo.

Per illustrare quanto detto, tuffiamoci subito in un esempio di ciclo For di base. Copia e incolla questa macro nel tuo editor VBA.

Sub Practice_ForLoops() 
Dim i As Integer

For i = 1 To 1000 
    Range("A" & i) = i ^ 2
Next i 

End Sub

Le parti che controllano il ciclo For sono le righe tra quella che inizia con la parola chiave For e quella che inizia con la parola chiave Next. L'oggetto Range in VBA viene utilizzato per controllare una cella (o un intervallo di celle, ovviamente). In questo esempio, la macro esegue un loop attraverso ogni riga nella colonna "A" da 1 a 1000 e imposta ogni cella uguale al quadrato del numero di riga.

Questo potrebbe essere un loop di base, ma ciò non lo rende meno impressionante. Puoi vedere quanto velocemente VBA sia in grado di riempire le prime 1000 righe del tuo foglio di calcolo.

La parola chiave “Step”

E se volessi agire solo su ogni quinta riga? Il ciclo For ha una parola chiave speciale che può farlo. Guarda questo esempio:

Sub Practice_Step() 
Dim i As Integer 

For i = 1 To 1000 Step 5 
    Range("B" & i) = Sqr(Range("A" & i)) 
Next i 

End Sub

La parola Step indica al ciclo For di scorrere tra 1 e 1000 con incrementi di 5, iniziando da 1. Questo esempio usa la funzione VBA Sqr per visualizzare la radice quadrata del valore che abbiamo appena inserito nella colonna A e posiziona il risultato nella colonna B, proprio come mostra l'immagine qua sopra.

Tuttavia, non sei limitato solo a scorrere in avanti. Puoi anche marciare all'indietro, come in questo esempio:

Sub Practice_StepBackwards() 
Dim i As Integer 

For i = 1000 To 1 Step -3 
    Range("C" & i) = Sqr(Range("A" & i)) 
Next i 

End Sub

Cosa pensi che faccia questo esempio?

Esatto; torna indietro da 1000 a 1 con incrementi di 3 e riporta la radice quadrata nella colonna C.

CONTINUA »

Excel VBA Masterclass

Vuoi imparare a sfruttare al massimo il potenziale di Excel?

Il corso di VBA per Excel che ti presentiamo ti insegnerà come automatizzare le tue attività lavorative e risparmiare tempo prezioso. Imparerai a creare strumenti di lavoro personalizzati e adattati alle tue esigenze, grazie alle funzionalità avanzate di Excel.

VBA Masterclass è un corso a dispense con rilascio settimanale.

Al momento è composta da 52 dispense per oltre 1.800 pagine, ma contiamo di implementarlo ancora. Ogni settimana al partecipante vengono rilasciate una o più dispense accompagnate da alcuni file di supporto.

Inoltre, sempre ogni settimana, il partecipante potrà cimentarsi in un breve test per verificare la comprensione dei concetti illustrati nelle dispense.

13 di queste 52 dispense sono per così dire "riepilogative": propongono un ripasso di alcuni argomenti trattati nelle dispense precedenti in quanto questi concetti vengono utilizzati per creare delle applicazioni. Tali progetti pratici sono completamente guidati.

Al termine del percorso, il partecipante potrà cimentarsi in un vero e proprio esame finale il cui superamento permette il download dell'attestato formativo. Il percorso completo, al momento, dura 43 settimane.

È chiaro che sarebbe impossibile ottenere la stessa mole di informazioni con un corso live tradizionale. Probabilmente occorrerebbero più di 100 ore di formazione.

Le prime 4 lezioni GRATIS!

Non lasciarti sfuggire questa opportunità unica di diventare un vero maestro di Excel VBA!

Al momento il corso include:

  • 52 dispense

  • 1.839 pagine

  • oltre 350 immagini esplicative

  • oltre 360 snippet di codice VBA

  • 13 progetti pratici completamente guidati

  • 112 file Excel scaricabili con il codice e/o i programmi illustrati nelle dispense

  • 52 momenti di esercitazione e di test

Cicli nidificati

Puoi apprezzare maggiormente i cicli For quando inizi a nidificarli.

Diamo un'occhiata a un esempio con cicli nidificati:

Sub Practice_NestedLoops() 
Dim i As Integer
Dim j As Integer 

For i = 1 To 1000 
    For j = 5 To 10 
        Cells(i, j) = i * j 
    Next j 
Next i 

End Sub

In questo esempio, la macro esegue ancora un ciclo attraverso ogni riga da 1 a 1000, ma c'è un colpo di scena: nelle colonne da 5 a 10 (lettere da E a J) di ogni riga, inserisce un valore pari al prodotto della variabile i e della variabile j. Ecco come appare:

Diamo un'occhiata alla seconda cella nella colonna H. La colonna H è l'ottava colonna, quindi sappiamo che la variabile j è 8. È la seconda riga, quindi sappiamo che la variabile i è uguale a 2. Quando moltiplichi i per j (2*8), ottieni 16 ed è esattamente ciò che viene scritto nella cella H2.

Uscire dai loop in anticipo

A volte è necessario uscire da un ciclo in anticipo quando vengono soddisfatte determinate condizioni. Come si fa? Per uscire da un ciclo For in anticipo, tutto ciò che devi fare è immettere il comando Exit For all'interno del ciclo, in questo modo:

Sub Practice_ExitLoops() 
Dim i As Integer 

For i = 1 To 1000 
    Range("A" & i) = i ^ 2 

    If Range("A" & i) > 100 Then 
        Range("D" & i) = "Esci dal ciclo su questa riga" 
        Exit For 
    End If 
Next i 

End Sub

Questo esempio introduce un concetto che non abbiamo trattato, ma che probabilmente conosci già: le istruzioni If. Tratteremo le istruzioni If più in dettaglio a breve.

Comunque, la prima riga con un quadrato maggiore di 100 interrompe il ciclo. Quando esegui questo esempio, vedrai che anche se abbiamo chiesto al ciclo For di andare dalla riga 1 alla riga 1000, si è fermato dopo la 11 perché 11^2 è maggiore di 100 (Nota: non si ferma a 10 perché 10^2 non è maggiore di 100. È uguale a 100!).

La prossima newsletter ti farà lavorare. Ti mostrerò alcune delle cose creative che puoi fare con VBA e voglio che tu provi a ricrearle da solo. Potrebbe essere impegnativo, ma sarà molto divertente! Lo faccio per darti un po' di ispirazione all'inizio del tuo viaggio con VBA.

Arrivederci a presto!

Simone (aka Somebooks)
Excel Academy

Informazioni sull'iscrizione alla newsletter: la newsletter di Excel Academy verrà recapitata solo a chi si è iscritto. Se ti è stata inoltrata e in futuro vuoi avere la tua copia, ti invitiamo a visitare questa pagina ed iscriverti.

Se desideri condividere questa newsletter con altri:

  1. Inoltra questa newsletter via e-mail, ma prima elimina il link per la cancellazione in fondo, in modo da non essere accidentalmente cancellato

  2. Chiedi al tuo amico/collega di visitare Excel Academy 

  3. Inserisci un link al sito di Excel Academy nella newsletter aziendale o nel tuo sito web.