Una macro "OnTime" si attiva al tempo programmato; cosa fa il Pc in quel momento e' ovviamente imprevedibile.
Devi quindi fare in modo che la macro che si esegue elabori solo il file a cui la macro appartiene; questo vuol dire che ogni istruzione deve indirizzare in modo esplicito il Workbook e il Worksheet da/su cui prendere / mettere i dati.
Prendi quest istruzioni:
ActiveWindow.SmallScroll Down:=75
Range("CC112:CS500").Select
Selection.Replace What:=".", etc etc
Esse fanno riferimento al file e al foglio attivo, in pratica qualcosa a caso... mentre immagino che dovrebbero fare riferimento al foglio "prono" del file di appartenenza.
Prova quindi a modificare in
- Codice: Seleziona tutto
ThisWorkbook.Sheets("Prono").Range("CC112:CS500"). Replace What:=".", etc etc
Vale anche per l' istruzione che dovrebbe fermare la rischedulazione della macro:
- Codice: Seleziona tutto
If ThisWorkbook.Sheets("Prono").Range("B4") - TimeSerial(0, 4, 0) > (Timer / 24 / 3600) Then Application.OnTime mTempo, "aggioauto"
Nella macro vedo anche uno strano
If CellaFlag <> "" e successivamente
.Range(CellaFlag) = .Range(CellaFlag) + 1; ma CellaFlag non risulta definita, quindi la If dovrebbe tranquillamente continuare (essendo il risultato Falso) ma la seconda dovrebbe darti un errore run time...
Ciao