_Se stai scrivendo un programma VBA e desideri eseguire la stessa attività più volte, puoi farlo utilizzando VBA per i cicli. VBA è un linguaggio di programmazione sequenziale. Ogni riga di codice viene eseguita dall’alto verso il basso finché non ci sono più righe di codice da leggere. Se vuoi tornare indietro ed eseguire un’attività, devi forzare usando il codice macro.

Ottieni risultati con loop._

Il ciclo For in VBA è uno dei tipi di loop più comuni. Il ciclo For ha due forme: For Next e For Each In Next. Il ciclo For viene in genere utilizzato per spostarsi in sequenza in un elenco di elementi o numeri.

Per terminare il ciclo For in un dato punto, possiamo usare l’istruzione exit.

For Loop andrà in tondo finché non soddisfa la condizione finale. Una volta soddisfatta la condizione finale, il flusso di programmazione continuerà verso il basso, nella sua direzione naturale.

The For … Next loop has the following syntax:

For counter = start_counter To end_counter

'Do something here (your code)

Next counter

In realtà stiamo creando un ciclo che utilizza contatore variabile come “cronometrista” del ciclo. Lo impostiamo su un valore uguale a start_counter all’inizio del ciclo e quindi lo incrementiamo di 1 durante ogni ciclo finché non soddisfa la condizione di fine. Il ciclo verrà eseguito fino al momento in cui il valore del contatore diventa uguale a end_counter. Il ciclo viene eseguito per l’ultima volta quando entrambi i valori precedenti corrispondono e quindi il ciclo si interrompe.

Tutto quanto sopra potrebbe creare confusione per alcune persone, quindi prepariamoci e iniziamo a imparare For Loop in Excel con pochi esempi.

Crea una nuova cartella di lavoro excel quindi salvala con l’estensione .xlsm Per avviare la schermata dell’editor di Visual Basic, usa ALT + F11 Inserisci nuovo modulo Copia il codice seguente nel modulo standard VB

img1

Loop 1 (Visualizzazione del numero con msgbox)

Sub Loop1()

Dim StartNumber As Integer

Dim EndNumber As Integer

EndNumber = 5



For StartNumber = 1 To EndNumber

MsgBox StartNumber & " is " & "Your StartNumber"

Next StartNumber

End Sub

img2

Spiegazione del codice:

Il codice VBA richiede che tu assegni un valore a StartNumber, dove EndNumber sono variabili dichiarate come numeri interi come punto di partenza per il tuo ciclo Questi valori possono essere qualsiasi numero e abbiamo EndNumber come 5 StartNumber viene avviato da 1 For StartNumber = 1 To EndNumber significa che il codice inizierà da 1 (StartNumber) a 5 (EndNumber)

  • MsgBox StartNumber & “is” & “Your StartNumber” visualizzerà la seguente finestra di messaggio

img3

Loop2 (valori di riempimento)

Sub Loop2()

'Fills cells A1:A56 with values of X by looping' --- Comment

'Increase value of X by 1 in each loop' --- Comment

Dim X As Integer

For X = 1 To 56

Range("A" & X).Value = X

Next X

End Sub

img4

Spiegazione del codice:

Abbiamo assegnato X come numero intero per X = da 1 a 56; questo inizierà con 1 e continuerà fino a 56 con un incremento di 1 ogni volta * Range (“A” & X) .Value = X; questa riga memorizzerà il valore di X e passerà al range da A1 a A56

img5

Loop3 (Riempi le celle con il colore di sfondo)

Sub Loop3()

' Fills cells B1:B56 with the 56 background colours' --- Comment

Dim X As Integer

For X = 1 To 56

Range("B" & X).Select

With Selection.Interior

.ColorIndex = X

.Pattern = xlSolid

End With

Next X

End Sub

img6

Spiegazione del codice:

Abbiamo assegnato X come numero intero Per X = da 1 a 56 inizierà con 1 e continuerà fino a 56 con un incremento di 1 ogni volta che Range (“B” & X). Seleziona; questa riga memorizzerà il valore di X e selezionerà la cella B1 fino a B56 Le 4 righe successive, ad esempio With Selection.Interior selezionerà il colorindex interno e prenderà il valore da X di quel colorindex in modo tale che 1 appartiene al colore nero; 2 appartiene al colore bianco; 3 per il rosso e così via

img7

Loop 4 (valori di riempimento con incremento di 2)

Per impostazione predefinita, il valore di Step è avanti 1, tuttavia può essere impostato su un numero maggiore di 1.

Sub Loop4()

' Fills every second cell from C1:C50 with values of X' --- Comment

Dim X As Integer

For X = 1 To 50 Step 2

Range("C" & X).Value = X

Next X

End Sub

img8

Spiegazione del codice:

Abbiamo assegnato X come numero intero per X = da 1 a 50 Passaggio 2; questo inizierà con 1 in X fino a 50 con un incremento di 2 ogni volta * Range (“C” & X) .Value = X; questa riga memorizzerà il valore di X e passerà all’intervallo da C1 a C50

img9

Loop 5 (VBA For Loop al contrario con istruzione STEP)

Non è necessario che il contatore nel ciclo For si sposti solo da valori bassi a valori più alti; invece, il ciclo For può essere eseguito all’indietro, ad esempio valori troppo alti o più bassi.

Anche se il valore Step è avanti 1 per impostazione predefinita, tuttavia, può essere impostato su un numero in ordine inverso.

Sub Loop5()

' Fills cells from D1:D50 with values of X' --- Comment

' In this case X decreases by 1' --- Comment

Dim X As Integer, Row As Integer

Row = 1



For X = 50 To 0 Step -1

Range("D" & Row).Value = X

Row = Row + 1

Next X

End Sub

img10

Spiegazione del codice:

Abbiamo assegnato X & Row come numero intero Row contiene valore 1 Per X = 50 to 0 Step -1; questo inizierà da 50 con decremento di 1 in X fino a 0 Range (“D” & Row) .Value = X; questa riga memorizzerà il valore di X e passerà all’intervallo da D1 a D50

img11

Loop 6 (Riempie ogni seconda cella in Reverse con STEP-2)

Nell’esempio del ciclo For sopra, possiamo usare Step and order per vedere se il ciclo For funziona in avanti o indietro.

Sub Loop6()

' Fills every second cell from E1:E100 with values of X' --- Comment

' In this case X decreases by 2' --- Comment

Dim X As Integer, Row As Integer

Row = 1

For X = 100 To 0 Step -2

Range("E" & Row).Value = X

Row = Row + 2

Next X

End Sub

img12

Spiegazione del codice:

Abbiamo assegnato X & Row come numero intero Row contiene valore 1 Per X = 100 to 0 Step -2; questo inizierà da 100 con decremento di 2 in X fino a 0 Range (“E” & Row) .Value = X; questa riga memorizzerà il valore di X e passerà all’intervallo da E1 a E100

img13

Loop 7 (For Loop with IF condition: Riempie le celle a partire da una cella specifica) Questo riempirà le celle dalla cella F11 con il valore 11 fino a quando X non soddisfa la condizione IF

Sub Loop7()

' Starts to fill cells F11:F100 with values of X' --- Comment

' This will exit from the loop after 50' --- Comment

Dim X As Integer

For X = 11 To 100

Range("F" & X).Value = X

If X = 50 Then

MsgBox ("Bye Bye")

Exit For

End If

Next X

End Sub

img14

Spiegazione del codice:

Abbiamo assegnato X come numero intero per X = da 11 a 100; inizierà da 11 con incremento di 1 in X fino a quando la condizione non soddisfa * Range (“F” & X) .Value = X; questa linea memorizzerà il valore di X e passerà all’intervallo F11 finché la condizione non soddisfa

img15

  • Dopo aver inserito il valore 50 nella cella F50, verrà visualizzata la seguente finestra di messaggio

Se i nostri blog ti sono piaciuti, condividilo con i tuoi amici su Facebook. E anche tu puoi seguirci su Twitter e Facebook.

_ Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare, integrare o innovare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]_