Loop VBA di Excel

I loop possono essere considerati il ​​miglior componente funzionale di VBA e possono anche essere considerati il ​​cuore dei macro. Di solito ti aiutano a ridurre il numero di righe nel tuo codice e fanno il lavoro in pochi minuti che può richiedere ore a un essere umano.

Nella vita di tutti i giorni, un programmatore si presenta con questi casi in cui deve eseguire lo stesso set di codici ancora e ancora. Si chiama loop. Ovviamente, ogni volta che si esegue lo stesso codice si otterrà lo stesso risultato con qualche variazione frazionaria nella variabile. Il looping presenta numerosi vantaggi, ma il più importante di tutti è l'automazione. Aiuta ad automatizzare le cose.

Se non hai mai usato VBA Script prima, puoi semplicemente aprire una cartella di lavoro Excel e premere Alt + F11 . Si aprirà un progetto VBA.

Andiamo più a fondo dentro.

Supponiamo di voler stampare da 1 a 10 numeri in un solo colpo. Possiamo farlo con il seguente codice.

Codice:

 Sub loop1 () Debug.Print 1 Debug.Print 2 Debug.Print 3 Debug.Print 4 Debug.Print 5 Debug.Print 6 Debug.Print 7 Debug.Print 8 Debug.Print 9 Debug.Print 10 End Sub 

Se riesci a ottenere rapidamente il codice, ho aggiunto Debug. Stampa uno per uno per stampare i numeri da 1 a 10. Dopo aver eseguito il codice, possiamo vedere l'output nella finestra immediata. Per aprire la finestra immediata, premi Ctrl + G ovunque in Excel.

Esegui il codice usando il tasto F5 o manualmente come mostrato nella schermata qui sotto. Quindi controlliamo l'output per questo codice.

Tipi di loop VBA in Excel

Essendo un programmatore, non sarai mai entusiasta di scrivere linee ripetitive che stanno per dare lo stesso risultato. Vorresti automatizzarlo. Quindi vedremo vari loop VBA di Excel e come usarli usando alcuni esempi.

Digitare # 1 - VBA per il ciclo successivo

Per Next VBA loop ci consente di eseguire il loop attraverso l'intervallo di celle ed eseguire la stessa attività per ogni cella specificata nel loop. Il numero iniziale e il numero finale devono essere indicati qui.

codice:

 Sub loop1 () Per i = da 1 a 10 celle (i, 1) .Valore = i Next i End Sub 

Questo codice fornisce esattamente lo stesso output del precedente. Tuttavia, la cosa più degna di nota in questo codice è la riduzione di un numero di righe. Abbiamo ridotto il codice a 12 righe a un semplice codice a 5 righe.

In questo codice, loop1 è il nome della macro. Il ciclo for inizia da i = 1, stampa il valore di i (ie 1) sotto la cella di Excel e su Next, torna di nuovo all'inizio del ciclo for e fa i = 2 stampa il valore di i (ie 2) nella cella successiva e così via fino a quando il codice non raggiunge il suo ultimo valore, ovvero 10. Non appena il codice raggiunge l'ultimo valore di i (10), il codice viene terminato automaticamente a causa della mancata disponibilità di qualsiasi valore intero superiore a 10.

Esegui il codice usando il tasto F5 o manualmente. Quindi puoi vedere l'output come di seguito.

Digitare # 2 - VBA per loop con passaggio in avanti

Come hai visto nell'esempio del ciclo precedente, ho avuto un aumento di 1 passaggio. Per impostazione predefinita, il valore del passo è considerato 1 in VBA. Tuttavia, è possibile impostare un nostro passo? Supponiamo di voler vedere solo i numeri pari tra 1 e 20. Come si può fare?

Come suggerisce la matematica generale, i numeri che si trovano alla distanza di 2 l'uno dall'altro (a partire da un primo numero pari 2) sono considerati numeri pari, giusto?

Applicheremo la stessa logica. Vedi sotto il codice per il tuo riferimento.

Codice:

 Sub ForwardStep () Per i = 2-20 celle Step 2 (i, 1) .Valore = i Next i End Sub 

Per i valori che iniziano da 2, questo ciclo consente di stampare 2, 4, 6, 8… 20 nelle celle Excel successive. Il passaggio 2 ha esplicitamente indicato che a partire dal numero 2, il codice passerà al numero successivo con il passaggio 2 (ovvero 4 verrà stampato) e così via. Questo processo continuerà fino a quando si verificano 20 in una cella. Non appena si verificano 20 in una cella, il loop verrà terminato automaticamente.

Esegui il codice usando il tasto F5 o manualmente. Quindi puoi vedere l'output come di seguito.

Digitare # 3 - VBA per loop con passo indietro

Allo stesso modo di for loop con step forward, possiamo usare for loop con step indietro. Ad esempio, cosa succede se impostiamo il nostro passo indietro su -2 ed eseguiamo un ciclo for dai valori 20 a 2?

Vedremo come funziona.

codice:

 Sub BackwardStep () Per i = 20 a 2 Step -2 Debug.Print i Next i End Sub 

Dopo aver eseguito il codice, possiamo vedere l'output nella finestra immediata. Per aprire la finestra immediata, premi Ctrl + G ovunque in Excel.

Dato che abbiamo dato un punto iniziale del loop come 20 e un punto finale come 2 con il passaggio -2, il loop inizia da 20 e nel passaggio -2 passa al numero successivo che è -18 e così via. Non appena il loop raggiunge il valore 2, viene terminato automaticamente e l'ultimo valore verrà stampato come 2.

Digitare # 4 - VBA nidificato per loop

Possiamo anche annidare il ciclo For. Tuttavia, non è consigliabile eseguire l'annidamento dello stesso loop più di tre volte in un codice (può essere considerato come errore logico).

Consultare il codice seguente per il ciclo nidificato.

Codice:

 Sub NestedFor () Per i = 1 a 10 Per j = 1 a 2 celle (i, j) .Valore = i * j Next j Next i End Sub 

In questo esempio, in i = 1 e j = 1, la macro inserisce il valore di i * j (1 * 1) nell'intersezione della riga i = 1 e della colonna j = 1 (ovvero la cella A1) e indica il valore successivo di j (2) mantenendo i = 1. Nell'intersezione della riga i = 1 e della colonna j = 2 (cioè cella B1), la macro immette il valore di I * j (1 * 2). Il ciclo ignora il valore successivo di j poiché j varia solo da 1 a 2 e passa al valore successivo di i.

Per i = 2 e j = 1, la macro immette il valore di i * j (2 * 1) nell'intersezione della seconda riga e della prima colonna (ovvero la cella A2) e continua. Fino all'intervallo di iej.

Esegui il codice usando il tasto F5 o manualmente come mostrato nella schermata qui sotto. Quindi puoi vedere l'output come di seguito.

Digitare # 5 - VBA Do While Loop

Il ciclo Do While è uno dei loop più interessanti in VBA. Ti permette di controllare la condizione e scrivere l'output (DO), quando una determinata condizione o serie di condizioni sono soddisfatte (o la / le condizione / è VERA).

Vedi il codice qui sotto:

Codice:

 Sub do_whileloop () Dim i Come intero i = 1 Do While i <= 10 celle (i, 1) .Valore = i * ii = i + 1 Sottotitolo loop 

Questo ciclo funziona come di seguito:

Per i valori di i da 1 (i = 1 inizialmente) a 10, calcola, i * i (ovvero il valore al quadrato per ciascun valore intero di i) e lo inserisce rispettivamente nelle celle da 1 a 10. L'output non è altro che i valori quadrati degli interi da 1 a 10. Dai un'occhiata più da vicino a Loop sotto questo codice. È obbligatorio aggiungerlo, altrimenti il ​​sistema genererà un errore.

Esegui il codice usando il tasto F5 o manualmente. Quindi puoi vedere l'output come di seguito.

Questi sono alcuni degli esempi di loop VBA che ho provato a curare in questo articolo. Spero che sia abbastanza preciso per chiarire alcuni concetti.

Cose da ricordare

  • Mentre si utilizza for loop con un passo indietro, assicurarsi che il numero iniziale sia maggiore del numero finale e viceversa.
  • In Do while loop, assicurati di utilizzare Loop per chiudere do do prima di terminare l'intero codice VBA. Altrimenti, il sistema genera un errore del compilatore con il messaggio di errore "Do Without Loop".

È possibile scaricare questo modello Excel loop VBA qui - Modello Excel loop VBA

Articoli consigliati

Questa è stata una guida ai loop VBA di Excel. Qui abbiamo discusso i tipi di loop VBA di Excel e come usarli insieme ad alcuni esempi pratici e modelli di Excel scaricabili. Puoi anche consultare i nostri altri articoli suggeriti–

  1. Funzione VBA in Excel
  2. VBA VLOOKUP, funzione
  3. Scorciatoie da tastiera di Excel
  4. Formula percentuale di Excel

Categoria: