Ciao,
fai attenzione ai nomi delle variabili: hai dichiarato una
variabile Secondi ma ne incrementi una chiamata NumSecondi.
In più, se scrivi:
codice:
Dim ore, Minuti, Secondi, Resto As Integer
specifichi che solo la variabile Resto è di tipo Integer...
...tutte le altre saranno di tipo variant. E' un errore molto
comune che può portarti problemi inattesi, la forma corretta è:
codice:
Dim ore As Integer, Minuti As Integer, Secondi As Integer, Resto As Integer
Ora veniamo al tuo problema:
Nel codice fai uso di variabili dinamiche, ossia variabili
dichiarate con Dim. Questo approccio fa si che le tue variabili
vengano "create" ad ogni esecuzione di quel codice.
Quindi, ad ogni evento Timer, la variabile secondi (così come le altre) viene inizializzata a 0 con il risultato che l'incremento darà sempre risultato 1.
Se vuoi conservare il valore di una variabile da un'esecuzione
all'altra delle tue Sub o Function, devi utilizzare variabili dinamiche a livello di modulo o variabili statiche a livello di procedura.
Tra i due, ti consiglio il secondo metodo:
la quantità di memoria utilizzata è la stessa ma almeno non avrai problemi se intendi dichiarare una Secondi in un'altra parte del tuo programma.
codice:
Dim ore As Integer, Minuti As Integer Resto As Integer
Static Secondi As Integer
Dim StringaOre As String, StringaMinuti As String, StringaSecondi As String
Nota: ho dichiarato come Static solo la variabile Secondi.
Il valore delle altre viene calcolato sul suo, quindi non è necessario che Ore, minuti e resto, siano statiche.
Per contro, se secondi è statica, conserverà il suo valore
ad ogni esecuzione dell'evento Timer.
Ciao
Simo