Uscire anticipatamente da un ciclo For … Next

Se usi i cicli For … Next nella tua programmazione macro (chi non lo fa?), allora dovresti sapere che possono richiedere molto tempo. Puoi minimizzarlo controllando solo ciò di cui hai bisogno. Ad esempio, si consideri il codice seguente, che controlla un array per vedere se esiste un valore. In caso contrario, aggiunge il valore alla fine dell’array. Se esiste già, il valore non viene aggiunto.

AddIt = False
For J = 1 to NumEntries
	If NumValues(J) = ToAdd Then AddIt = True
Next J
If AddIt Then
	NumEntries = NumEntries + 1
	NumValues(NumEntries) = ToAdd
End If

 

Funziona benissimo, ma se l’array diventa grande, puoi finire per passare ore attraverso il ciclo For … Next. Si consideri ora il codice seguente, che esegue la stessa operazione, ma esce anticipatamente dal ciclo For … Next se viene rilevata una corrispondenza.

AddIt = False
For J = 1 to NumEntries
	If NumValues(J) = ToAdd Then
		AddIt = True
		Exit For
	End If
Next J
If AddIt Then
	NumEntries = NumEntries + 1
	NumValues(NumEntries) = ToAdd
End If

 

Ora, se una corrispondenza viene trovata all’inizio del ciclo, tutte le altre iterazioni vengono saltate perché viene rilevata l’istruzione Exit For e il ciclo viene praticamente chiuso immediatamente. Il risultato è una macro più veloce in esecuzione.

Ti è stato utile?

Articolo precedente

La struttura For ... Next

Articolo successivo

La struttura If ... End If