| | Post: 17 | Registrato il: 24/05/2005
| Utente Junior | 2010 | | OFFLINE |
|
23/11/2014 13:13 | |
Salve,
volevo chiedere se esiste un modo per far partire una macro a determinati orari contenuti in un intervallo.
Grazie _____________________
Versione Excel 2010 |
|
| | Post: 713 | Registrato il: 24/04/2004
| Città: TERAMO | Età: 63 | Utente Senior | 2010 | | OFFLINE |
|
23/11/2014 13:36 | |
Ciao.
Premesso che non capisco cosa intendi con "orari contenuti in un intervallo", per far partire una macro ad un'ora prestabilita, si può usare Application.OnTime.
Per esempio, questa istruzione farebbe partire la macro MiaMacro alle ore 17
Application.OnTime TimeValue("17:00:00"), "MiaMacro" __________________________
[Excel 2010]
-Condividere la conoscenza aumenta la ricchezza di tutti.
-Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
-Il sonno della ragione genera mostri. (Francisco Goya) |
| | Post: 17 | Registrato il: 24/05/2005
| Utente Junior | 2010 | | OFFLINE |
|
23/11/2014 14:04 | |
mi spiego meglio
io ho questa situazione :
Ho un intervallo con degli orari :
A
13.30
13.45
14.00
14.30
14.45
etc...
io ho bisogno di far partire la macro negli orari contenuti nella colonna A.
è possibile?
grazie. _____________________
Versione Excel 2010 |
| | Post: 715 | Registrato il: 24/04/2004
| Città: TERAMO | Età: 63 | Utente Senior | 2010 | | OFFLINE |
|
23/11/2014 15:02 | |
Sì, è possibile, ma servirebbero informazioni aggiuntive:
-la cella che contiene il primo orario
-se l'intervallo è fisso, la cella che contiene l'ultimo orario, altrimenti verrà determinata in base all'ultima cella contenente un valore.
-una volta raggiunta la fine dell'intervallo, si ricomincia daccapo o l'esecuzione termina?
A titolo di esempio, queste due macro impostano l'esecuzione della macro di nome MiaMacro, in base ai valori in colonna A.
Private LastTime As Long
Public Sub Start()
LastTime = 1 'parte dalla cella A1
Application.OnTime TimeValue(CDate(Range("A1").Value)), "TimedMacro"
End Sub
Public Sub TimedMacro()
Call MiaMacro '<==Sostituisci col nome della macro da eseguire.
LastTime = LastTime + 1 'punta alla cella successiva
If IsDate(Range("A" & LastTime)) Then 'se trova un valore valido nella cella
Application.OnTime TimeValue(CDate(Range("A" & LastTime).Value)), "TimedMacro" 'programma l'esecuzione successiva
End If
End Sub
Le macro e la variabile LastTime devono trovarsi in un modulo standard
Per avviare l'esecuzione automatica, bisogna eseguire la macro Start.
Le esecuzioni successive verranno programmate automaticamente.
Con queste impostazioni ci sarà il seguente problema: se eseguo la macro Start alle ore 14 e l'orario in A1 è 13:30, l'esecuzione partirà alle 13:30 del giorno successivo. [Modificato da Zer0kelvin 23/11/2014 15:03] __________________________
[Excel 2010]
-Condividere la conoscenza aumenta la ricchezza di tutti.
-Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
-Il sonno della ragione genera mostri. (Francisco Goya) |
| | Post: 18 | Registrato il: 24/05/2005
| Utente Junior | 2010 | | OFFLINE |
|
23/11/2014 17:59 | |
Funziona alla grande.
Ti ringrazio
Ho ovviato al problema che mi hai indicato creando la lista degli orari in base all'orario attuale.
Ora però come faccio a stoppare la macro?
_____________________
Versione Excel 2010 |
| | Post: 716 | Registrato il: 24/04/2004
| Città: TERAMO | Età: 63 | Utente Senior | 2010 | | OFFLINE |
|
23/11/2014 18:10 | |
Questo dovrebbe interrompere l'esecuzione
Public Sub StopMacro()
On Error Resume Next
Application.OnTime TimeValue(CDate(Range("A" & LastTime).Value)), "TimedMacro", Schedule:=False
End Sub
e comunque l'esecuzione si arresta appena trova una cella vuota. [Modificato da Zer0kelvin 23/11/2014 18:11] __________________________
[Excel 2010]
-Condividere la conoscenza aumenta la ricchezza di tutti.
-Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
-Il sonno della ragione genera mostri. (Francisco Goya) |
| | Post: 4.098 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
24/11/2014 09:35 | |
Ciao Zer0, ho avuto sempre problemi con le macro a tempo, premetto che non ho testato la tua, ma ho da porre una domanda.
Quando parte la macro non posso interagire con il foglio in quanto è in esecuzione la macro per il tempo, è cosi?.
Ciao By Sal
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 717 | Registrato il: 24/04/2004
| Città: TERAMO | Età: 63 | Utente Senior | 2010 | | OFFLINE |
|
24/11/2014 14:48 | |
Ciao Salvatore.
Io ho, invece, una vera antipatia per le macro temporizzate e finora ho sempre evitato di usarle, tranne in qualche cronometro/orologio fatto per divertimento.
Per quanto riguarda la tua domanda, no, impostare una macro temporizzata non impedisce di interagire con Excel o eseguire altre macro.
Durantè l'esecuzione della macro ("MiaMacro" nell'esempio) temporizzata, allora sì, saresti bloccato come durante l'esecuzione di qualunque altra macro.
Però non sono in grado di dirti cosa succede se, allo scoccare dell'ora prevista, è già in esecuzione un'altra macro...
E' probabile che un'eventuale macro in esecuzione venga interrotta per eseguire la macro temporizzata, ma non ne sono certo.
[Modificato da Zer0kelvin 24/11/2014 14:51] __________________________
[Excel 2010]
-Condividere la conoscenza aumenta la ricchezza di tutti.
-Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
-Il sonno della ragione genera mostri. (Francisco Goya) |
| | Post: 0 | Registrato il: 29/01/2017
| Città: RAVENNA | Età: 40 | Utente Junior | 2013 | | OFFLINE | |
|
24/07/2017 18:10 | |
Zer0kelvin, 23/11/2014 18.10:
Questo dovrebbe interrompere l'esecuzione
Public Sub StopMacro()
On Error Resume Next
Application.OnTime TimeValue(CDate(Range("A" & LastTime).Value)), "TimedMacro", Schedule:=False
End Sub
e comunque l'esecuzione si arresta appena trova una cella vuota.
Eventualmente se ho creato un elenco di orari ma ne devo cancellare uno per un qualsiasi motivo, c'e un modo per andare alla cella dopo ancora?
ovvero 11:00 11:30 12:20 15:00
cancello l'orario 11:30 posso andare a quello successivo senza che la macro si fermi??
|
|
|