/ / Excel VBA Loop

Excel VBA Loop

Single Loop | Doppio anello | Triple Loop | Do While Loop

Looping è una delle più potenti tecniche di programmazione. UN ciclo continuo nel Excel VBA ti consente di scorrere un intervallo di celle con solo poche righe di codice.

Single Loop

È possibile utilizzare un singolo ciclo per scorrere un intervallo di celle unidimensionale.

Inserire un pulsante di comando nel foglio di lavoro e aggiungere le seguenti linee di codice:

Dim i As Integer

For i = 1 To 6
    Cells(i, 1).Value = 100
Next i

Risultato quando si fa clic sul pulsante di comando sul foglio:

Single Loop in VBA di Excel

Spiegazione: Le righe di codice tra For e Next verranno eseguite sei volte. Per i = 1, VBA di Excel inserisce il valore 100 nella cella all'intersezione della riga 1 e della colonna 1. Quando Excel VBA raggiunge Avanti i, aumenta i con 1 e torna all'istruzione For. Per i = 2, VBA di Excel inserisce il valore 100 nella cella all'intersezione della riga 2 e della colonna 1, ecc.

Nota: è buona norma indentare sempre (tab) il codice tra le parole For e Next. Questo rende il tuo codice più facile da leggere.

Doppio anello

È possibile utilizzare un doppio ciclo per scorrere un intervallo bidimensionale di celle.

Inserire un pulsante di comando nel foglio di lavoro e aggiungere le seguenti linee di codice:

Dim i As Integer, j As Integer

For i = 1 To 6
    For j = 1 To 2
        Cells(i, j).Value = 100
    Next j
Next i

Risultato quando si fa clic sul pulsante di comando sul foglio:

Double Loop in VBA di Excel

Spiegazione: Per i = 1 e j = 1, VBA di Excel inserisce il valore 100 nella cella all'intersezione della riga 1 e della colonna 1. Quando Excel VBA raggiunge Avanti j, aumenta j con 1 e torna all'istruzione For j. Per i = 1 e j = 2, VBA di Excel inserisce il valore 100 nella cella all'intersezione della riga 1 e della colonna 2. Quindi, VBA di Excel ignora Successivo j perché j viene eseguito solo da 1 a 2. Quando Excel VBA raggiunge Avanti i , aumenta i con 1 e salta all'istruzione For i. Per i = 2 e j = 1, VBA di Excel inserisce il valore 100 nella cella all'intersezione della riga 2 e della colonna 1, ecc.

Triple Loop

È possibile utilizzare un ciclo triplo per eseguire il ciclo di intervalli bidimensionali su più fogli di lavoro Excel.

Inserire un pulsante di comando nel foglio di lavoro e aggiungere le seguenti linee di codice:

Dim c As Integer, i As Integer, j As Integer

For c = 1 To 3
    For i = 1 To 6
        For j = 1 To 2
            Worksheets(c).Cells(i, j).Value = 100
        Next j
    Next i
Next c

Spiegazione: L'unica modifica apportata rispetto al codice per il doppio ciclo è che abbiamo aggiunto un altro ciclo e aggiunto fogli di lavoro (c). davanti a Celle per ottenere l'intervallo bidimensionale sul primo foglio per c = 1, il secondo foglio per c = 2 e il terzo foglio per c = 3. Scarica il file Excel per vedere questo risultato.

Do While Loop

Oltre al ciclo For Next, ci sono altri loop in VBA di Excel. Ad esempio, il ciclo Do While. Il codice inserito tra Do While e Loop verrà ripetuto finché la parte dopo Do While è vera.

1. Inserisci un pulsante di comando nel tuo foglio di lavoro e aggiungi le seguenti linee di codice:

Dim i As Integer
i = 1

Do While i < 6
    Cells(i, 1).Value = 20
    i = i + 1
Loop

Risultato quando si fa clic sul pulsante di comando sul foglio:

Do While Loop

Spiegazione: Finché i è inferiore a 6, VBA di Excel inserisce il valore 20 nella cella all'intersezione della riga i e della colonna 1 e incrementa i di 1. In Excel VBA (e in altri linguaggi di programmazione), il simbolo "=" significa diventa. Non significa uguale. Quindi i = i + 1 significa i diventa i + 1. In altre parole: prendi il valore attuale di i e aggiungi 1 ad esso. Ad esempio, se i = 1, i diventa 1 + 1 = 2. Di conseguenza, il valore 20 verrà inserito nella colonna A cinque volte (non sei poiché Excel VBA si arresta quando i è uguale a 6).

2. Inserisci alcuni numeri nella colonna A.

Qualsiasi numero di righe

3. Metti un pulsante di comando nel tuo foglio di lavoro e aggiungi le seguenti linee di codice:

Dim i As Integer
i = 1

Do While Cells(i, 1).Value <> ""
    Cells(i, 2).Value = Cells(i, 1).Value + 10
    i = i + 1
Loop

Risultato quando si fa clic sul pulsante di comando sul foglio:

Avanzato Do While Loop

Spiegazione: fino a quando Cells (i, 1).Il valore non è vuoto (<> significa non uguale a), VBA di Excel immette il valore nella cella all'intersezione della riga i e della colonna 2, ovvero 10 superiore al valore nella cella all'intersezione della riga i e della colonna 1 Excel VBA si arresta quando i è uguale a 7 perché Cells (7, 1) .Value è vuoto. Questo è un ottimo modo per scorrere un numero qualsiasi di righe su un foglio di lavoro.

Leggi anche: