Guardando il tuo codice non mi torna una cosa.
A cosa serve il loop nel metodo Command1_change ?

Visto che dato non e' un array, conterra' sempre il valore di
dato = Val(Text1(9).Text)
Lo stesso problema lo hai nel metodo Private Sub Timer1_Timer()

Correggi il codice e riformula la domanda, che non ho capito molto bene ....