Ciao,
fai attenzione ai nomi delle variabili: hai dichiarato una
variabile Secondi ma ne incrementi una chiamata NumSecondi.
In più, se scrivi:
specifichi che solo la variabile Resto è di tipo Integer...codice:Dim ore, Minuti, Secondi, Resto As Integer
...tutte le altre saranno di tipo variant. E' un errore molto
comune che può portarti problemi inattesi, la forma corretta è:
Ora veniamo al tuo problema:codice:Dim ore As Integer, Minuti As Integer, Secondi As Integer, Resto As Integer
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.
Nota: ho dichiarato come Static solo la variabile Secondi.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
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

