VBA While Loop

VBA While Loop è un concetto importante e potente che potresti aver visto nella maggior parte dei linguaggi di programmazione. Se padroni di questo concetto in VBA, sarai in grado di preparare potenti script che funzionano con i dati del foglio di calcolo in modi totalmente diversi e convenienti. In questo articolo, tieniti pronto ad esplorare il mondo dei diversi cicli mentre insieme a molteplici esempi in arrivo per il tuo aiuto.

Lo scopo del ciclo While è quello di ripetere un determinato blocco di istruzioni soggetto al soddisfacimento di una condizione. Più precisamente, mentre il ciclo ripete l'istruzione corrispondente mentre una condizione è vera. Una volta che la condizione diventa False (Non soddisfa), il loop termina da solo.

Esistono sostanzialmente due tipi di ciclo while nel VBA di Microsoft Excel:

  • VBA While-Wend Loop
  • VBA Do-While Loop

VBA While-Wend Loop esiste per rendere il codice compatibile con una versione precedente di codici. Il VBA Do-While è la versione aggiornata del ciclo while che è più flessibile e strutturato rispetto al precedente ed è raccomandato per essere utilizzato dalla comunità Microsoft.

Per ogni evenienza, ti stai chiedendo cosa significhi Wend, è una forma breve di While End e funziona allo stesso modo.

Esempi di VBA While Loop

Immergiamoci in profondità nella guida passo passo di diversi tipi di VBA While Loops.

Puoi scaricare questo modello VBA While Loop Excel qui - Modello VBA While Loop Excel

Esempio 1

VBA While-Wend Loop

Sintassi:

Facciamo un esempio per vederlo in modo migliore.

  • Definire una procedura secondaria per creare una macro nel nuovo modulo.

Codice:

 Sub WhileEx1 () End Sub 

  • Impostare due variabili Numero su Uno e Somma su Zero.

Codice:

 Sub WhileEx1 () Numero = 1 Sum = 0 End Sub 

  • Imposta una condizione while per la variabile numerica.

Codice:

 Sub WhileEx1 () Numero = 1 Sum = 0 While Number <= 10 End Sub 

  • Aggiungi istruzioni da eseguire per questa condizione while.

Codice:

 Sub WhileEx1 () Numero = 1 Sum = 0 While Number <= 10 Sum = Sum + Numero Number = Number + 1 End Sub 

  • Aggiungi Debug.Print Sum in modo che la somma dei primi 10 numeri naturali possa essere stampata una alla volta nella Finestra immediata.

Codice:

 Sub WhileEx1 () Numero = 1 Sum = 0 While Number <= 10 Sum = Sum + Numero Number = Number + 1 Debug.Print Sum End Sub Sott 

  • Infine, termina il ciclo While con l'istruzione Wend.

Codice:

 Sub WhileEx1 () Numero = 1 Sum = 0 While Number <= 10 Sum = Sum + Numero Number = Number + 1 Debug.Print Sum Wend End Sub 

  • Premi F5 o il pulsante Esegui per eseguire questo codice e vedere l'output.

In questo codice, la variabile sum è impostata su zero. Quindi ogni volta che il Numero viene aumentato di 1 fino a raggiungere 10 (usando il ciclo while), la variabile somma aggiungerà la somma precedente con il numero corrente e la visualizzerà nella Finestra immediata riga per riga o somma graduale che puoi dire.

Esempio n. 2

VBA Do-While Loop

Do-While Loop Quando la condizione è selezionata prima dell'inizio del loop

Esistono due modi in cui è possibile eseguire il ciclo while.

  • È possibile aggiungere condizioni prima dell'inizio del ciclo (è uguale al ciclo While-Wend). Qui, non ci sarebbe iterazione del loop se la condizione fallisse per la prima volta.
  • È possibile aggiungere condizioni all'ultimo del ciclo per verificare. In questo caso, ci sarà almeno un'iterazione del loop prima che la condizione venga a mancare.

Sintassi:

Facciamo un esempio per chiarire le cose.

  • Inserire un nuovo modulo e definire una nuova procedura secondaria per definire una macro.

Codice:

 Sub WhileEx2 () End Sub 

  • Definire una nuova variabile I come numero intero. E inizia il suo valore su 1.

Codice:

 Sub WhileEx2 () Dim i Dim Intero i = 1 End Sub 

  • Usa Do-While per aggiungere una condizione all'inizio del ciclo.

Codice:

 Sub WhileEx2 () Dim i Dim Intero i = 1 Do While i <= 10 End Sub 

  • Aggiungi istruzioni da eseguire fino a quando la condizione è vera. Aggiungi la seguente riga di codice alla macro.

Codice:

 Sub WhileEx2 () Dim i Dim Intero i = 1 Do While i <= 10 celle (i, 1) .Valore = i * i End Sub 

Questa affermazione consente all'ultima riga della prima colonna di memorizzare il valore al quadrato dei numeri.

  • Aggiungi un'altra istruzione che consente un incremento in i di 1 ad ogni iterazione del ciclo.

Codice:

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

  • Completa questo ciclo aggiungendo l'istruzione Loop alla fine del codice.

Vediamo la soluzione alternativa di questo codice:

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 righe da 1 a 10 della colonna 1 (cioè colonna A) . L'output non è altro che i valori quadrati degli interi da 1 a 10.

  • Esegui questo codice premendo F5 o il pulsante Esegui e vedi l'output.

Puoi vedere i valori al quadrato dei numeri naturali da 1 a 10 che sono memorizzati in ogni cella separatamente dalla colonna A.

Esempio n. 3

Ciclo Do-While quando Condizione è selezionata alla fine del ciclo

Sintassi:

Vediamo un esempio per vedere il loop in un modo migliore.

  • Inserire un nuovo modulo e definire una nuova procedura secondaria per memorizzare una macro.

Codice:

 Sub WhileEx3 () End Sub 

  • Definire un nuovo numero intero come nell'esempio precedente e assegnargli un valore iniziale.

Codice:

 Sub WhileEx3 () Dim i Dim Intero i = 1 End Sub 

  • Utilizzare una condizione Do per aggiungere le istruzioni da eseguire fino a quando la condizione è vera.

Codice:

 Sub WhileEx3 () Dim i Dim Intero i = 1 Do Cells (i, 2) .Value = i * ii = i + 1 End Sub 

Si consiglia di utilizzare uno spazio bianco (tasto Tab) come rientro mostrato nel codice sopra, che consente al codice di funzionare senza problemi e definisce anche un buon formato di struttura per il codice.

  • Usa Loop while per aggiungere una condizione da verificare per ogni istruzione da eseguire.

Codice:

 Sub WhileEx3 () Dim i Dim Intero i = 1 Do Cells (i, 2) .Value = i * ii = i + 1 Loop While i <= 10 End Sub 

  • Esegui questo codice premendo manualmente il pulsante F5 o Esegui e vedi l'output.

Vedrai l'output come mostrato nella figura sopra.

Come funziona questo codice nel back-end?

Il sistema moltiplica il valore di i (a partire da 1) a se stesso e memorizza nella seconda colonna (Celle (i, 2)) per ogni riga una per una. Il codice si interrompe non appena il valore della variabile i raggiunge 10. L'output potrebbe essere lo stesso, il che significa logicamente che entrambi i codici funzionano allo stesso modo. Ma la differenza principale sta nella compilazione del codice. Nell'ultimo esempio, la condizione era già presente e il sistema sapeva fino a che punto doveva andare. Tuttavia, in questo codice, il sistema non è a conoscenza della condizione al momento dell'esecuzione delle istruzioni ed esegue l'iterazione una alla volta. Finché la condizione è falsa, il codice ha interrotto l'esecuzione.

Cose da ricordare su VBA While Loop

  • Il ciclo While-Wend è obsoleto ed è lì solo per essere compatibile con le versioni precedenti di codici. Dovresti invece usare un ciclo Do-While.
  • Il ciclo Do-While è più flessibile e ben strutturato rispetto al ciclo While-Wend.
  • Il ciclo Do-while può essere utilizzato in due modi in cui in un caso è possibile aggiungere prima la condizione da verificare e quindi aggiungere le istruzioni che soddisfano la condizione. In un altro modo, è possibile aggiungere prima le istruzioni e successivamente aggiungere la condizione da verificare.
  • Si consiglia di utilizzare i rientri nei loop in modo che il codice possa essere più dinamico e più facile da leggere.

Articoli consigliati

Questa è stata una guida a VBA Do While Loop. Qui abbiamo discusso su come utilizzare Excel VBA Do While Loop insieme ad alcuni esempi pratici e template Excel scaricabili. Puoi anche consultare i nostri altri articoli suggeriti:

  1. Come utilizzare la funzione FIND in Excel?
  2. Come utilizzare la funzione TRIM VBA?
  3. Array VBA | Tutorial completo
  4. Come utilizzare il caso VBA Select?

Categoria: