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.