Non siamo a livello accademico:
Come ho già esplicitato, nel 99% dei casi ogni istruzione compresa tra il for ed il next risponde esattamente a quanto indicato nelle specifiche del ciclo, ma il problema si presenta al di fuori del ciclo stesso, quando la
variabile iterata in uscita da esso viene riutilizzata, cosa fattibilissima, poichè la variabile referenziata può cambiare valore anche all'interno del ciclo.
Se si prende come esempio il codice seguente:
Codice:
Yt = 1
range(mRange).Select
For Each s_Data In Selection
Yy = 0: s = s_Data.Value
For Tt = 1 To Yt
If s <> mArray(Tt) Then Yy = Yy + 1
Next
-> If Yt = Yy Then
mArray(Yy) = s
Yt = Yt + 1
ReDim Preserve mArray(1 To Yt)
End If
Next
ci si rende conto che la variabile Yt fuori dal ciclo nidificato for...next non avrebbe senso.
Infatti, poichè Tt ed Yt sono entrambe uguali ad 1 al primo ciclo, basterebbe sostituire
If Yt = Yy Then
con
If
Tt = Yy Then
...invece no.
Poichè lo step è pari ad 1 anche se non evidenziato esplicitamente, Tt in uscita dal ciclo varrebbe 2, non 1 come esplicitamente imposto con For Tt = 1 To Yt
Di conseguenza, For Each andrebbe a vuoto per tutte le successive iterazioni di s_Data.