Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Far partire macro a determinati orari contenuti in un intervallo

Ultimo Aggiornamento: 24/07/2017 18:10
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

Macro a tempo
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 [SM=x423051]

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

Re:
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??


Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 02:52. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com