Per il ciclo successivo in Excel VBA: una guida per principianti con esempi

In VBA, il ciclo viene utilizzato quando è necessario eseguire la stessa attività più volte fino a quando non viene soddisfatta una condizione (o finché una condizione non è vera).

In questo tutorial imparerai come utilizzare For Next Loop in Excel VBA.

Se sei interessato a imparare VBA nel modo più semplice, dai un'occhiata a my Formazione online su VBA di Excel.

Utilizzo del ciclo FOR NEXT in Excel VBA

Il ciclo "For Next" funziona eseguendo il ciclo il numero di volte specificato.

Ad esempio, se ti chiedessi di aggiungere manualmente i numeri interi da 1 a 10, aggiungeresti i primi due numeri, quindi aggiungeresti il ​​terzo numero al risultato, quindi aggiungeresti il ​​quarto numero al risultato, e così via…

Non è vero?

La stessa logica viene utilizzata nel ciclo For Next in VBA.

Specifica quante volte vuoi che il ciclo venga eseguito e specifichi anche cosa vuoi che il codice esegua ogni volta che viene eseguito il ciclo.

Ecco il formato del ciclo For Next che devi utilizzare in VBA per aggiungere i primi 10 numeri interi.

Per i = da 1 a 10 [aggiungi l'i-esimo intero positivo al risultato] Avanti i

Ora diamo un'occhiata ad alcuni esempi di come utilizzare il ciclo For Next.

Esempio 1: aggiunta dei primi 10 numeri interi positivi

Di seguito è riportato il codice che aggiungerà i primi 10 numeri interi positivi utilizzando un ciclo For Next. Verrà quindi visualizzata una finestra di messaggio che mostra la somma di questi numeri.

Sub AddNumbers() Dim Total As Integer Dim Count As Integer Total = 0 For Count = da 1 a 10 Total = Total + Count Next Count MsgBox Total End Sub

In questo codice, il valore di Total è impostato su 0 prima di entrare nel ciclo For Next.

Una volta entrato nel ciclo, mantiene il valore totale dopo ogni ciclo. Quindi, dopo il primo ciclo, quando Contatore è 1, il valore "Totale" diventa 1 e dopo il secondo ciclo diventa 3 (1+2), e così via.

E infine, quando il ciclo termina e Total ha la somma dei primi 10 interi positivi, un MsgBox visualizza semplicemente il risultato in una finestra di messaggio.

Clicca qui per scaricare il file di esempio

Esempio 2: somma dei primi 5 numeri interi pari positivi

Per sommare i primi cinque numeri interi positivi pari (cioè 2,4,6,8 e 10), è necessario un codice simile con una condizione per considerare solo i numeri pari e ignorare i numeri dispari.

Ecco un codice che lo farà:

Sub AddEvenNumbers() Dim Total As Integer Dim Count As Integer Total = 0 For Count = da 2 a 10 Step 2 Total = Total + Count Next Count MsgBox Total End Sub

Si noti che abbiamo avviato il valore Count da 2 e utilizzato anche il passaggio 2 nella sintassi For.

Il passaggio 2 direbbe al codice di incrementare il valore "Count" di 2 ogni volta che viene eseguito il ciclo. Quindi il valore Count inizia da 2 e poi diventa 4, 6, 8 e 10 quando si verifica il loop.

NOTA: un altro modo per farlo potrebbe essere eseguire il ciclo da 1 a 10 e all'interno del ciclo verificare se il numero è pari o dispari. Tuttavia, l'uso di Step, in questo caso, è un modo più efficiente in quanto non richiede che il ciclo venga eseguito 10 volte, ma solo 5 volte.

Clicca qui per scaricare il file di esempio.

Esempio 3: ottenere la parte numerica da una stringa alfanumerica

Il ciclo "For Next" può essere utilizzato anche per eseguire il ciclo di ciascun carattere in una stringa.

Ad esempio, se si dispone di un elenco di stringhe alfanumeriche, è possibile utilizzare il ciclo For Next per estrarne i numeri (come mostrato di seguito):

Ecco un codice che crea una funzione personalizzata in VBA che può essere utilizzata come qualsiasi altra funzione del foglio di lavoro.

Estrae la parte numerica dalla stringa alfanumerica.

Funzione GETNUMERIC(Cl As Range) Dim i As Integer Dim Result as Long For i = 1 To Len(Cl) If IsNumeric(Mid(Cl, i, 1)) Then Result = Result & Mid(Cl, i, 1) End If Next i GetNumeric = Result End Function

In questo codice, il numero di volte in cui viene eseguito il ciclo dipende dalla lunghezza della stringa alfanumerica (usa la funzione LUNGHEZZA per trovare la lunghezza della stringa).

Devi inserire questa funzione nella finestra del codice del modulo, quindi puoi usarla come qualsiasi altra funzione del foglio di lavoro.

Clicca qui per scaricare il file di esempio.

Esempio 4: ottenere numeri casuali nell'intervallo selezionato

Supponiamo di voler inserire rapidamente numeri casuali nelle celle selezionate, qui il codice che lo farà.

Sub RandomNumbers() Dim MyRange As Range Dim i As Integer, j As Integer Set MyRange = Selection For i = 1 To MyRange.Columns.Count For j = 1 To MyRange.Rows.Count MyRange.Cells(j, i) = Rnd Next j Next i End Sub

Questo è un esempio di ciclo For Next annidato in cui un ciclo For viene utilizzato all'interno di un ciclo For.

Supponiamo di effettuare una selezione di 10 righe e 4 colonne, il valore di i varia da 1 a 4 e il valore di j varia da 1 a 10.

Quando viene eseguito il primo ciclo For, il valore di i è 1. Quindi passa al secondo ciclo For che viene eseguito 10 volte (per ogni riga).

Una volta che il secondo ciclo For è stato eseguito 10 volte, torna al primo ciclo For dove ora il valore di i diventa 2. Anche in questo caso il ciclo For successivo viene eseguito per 10 volte.

Ecco come funziona il ciclo For Next annidato.

Clicca qui per scaricare il file di esempio.

Potrebbero piacerti anche i seguenti tutorial VBA di Excel:

  • Lavorare con celle e intervalli in Excel VBA.
  • Lavorare con i fogli di lavoro in Excel VBA.
  • Lavorare con le cartelle di lavoro utilizzando VBA.
  • Utilizzo delle istruzioni IF Then Else in VBA.
  • Excel VBA Seleziona caso.
  • Creazione di una funzione definita dall'utente in Excel.
  • Eventi VBA di Excel: una guida semplice (e completa)
  • Come registrare una macro in Excel.
  • Come eseguire una macro in Excel.
  • Come creare un componente aggiuntivo in Excel.
  • Come salvare e riutilizzare la macro utilizzando la cartella di lavoro macro personale di Excel.
  • Utili esempi di macro di Excel per principianti.
  • Utilizzo della funzione InStr in VBA.
wave wave wave wave wave