Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

Macro VBA con multi timer

  • Messaggi
  • OFFLINE
    andy.mithos
    Post: 2
    Registrato il: 02/05/2017
    Città: FIRENZE
    Età: 78
    Utente Junior
    2016
    00 10/05/2019 18:35
    Salve a tutti gli esperti di questo bel Forum, sono Andy ed ho un problema con VBA che non so usare, in quanto devo realizzare un programma con Excel contenente formule (che so fare) ma con anche delle macro che avviano dei timer in successione per una serie di eventi che si svolgono nella giornata e che sono distribuiti su più fogli dello stesso documento.
    Il timer una volta avviato deve in un paio di occasioni per evento, generare delle MSGBOX con avviso e se possibile anche sonoro tipo un peep (purtroppo ho seri problemi di sordità), come detto gli eventi si attivano in sequenza e gli avvisi come detto devono essere attivati all’inizio del nuovo evento e tre/cinque minuti prima dello scadere ed in contemporanea far partire il timer successivo.
    Mi spiego meglio nell'esempio che trovate sia qui sotto oltre che nell'allegato, dove ci sono descritti quattro eventi che faranno partire ciascuno il timer in sequenza e mai in contemporanea.
    Se capirò dai Vostri preziosi suggerimenti che spero mi darete per questi quattro sono certo che potrò completarli da solo per tutti gli altri da aggiungere. (Almeno spero!!).
    1° evento dopo avere acceso il forno, trascorso il tempo corrispondente alla somma tra B1 e E1 che nel caso dia come risultato il valore maggiore di 60 automaticamente vengano sottratti generando l’avviso “A (somma di B1 e E1) della prossima ora spegni il forno”.
    Tre/ cinque minuti prima della fine del timer deve apparire il messaggio “tra pochi minuti devi spegnere il forno” e se possibile anche l’avviso sonoro.
    (ATTENZIONE: tutti i tempi conteggiati devono essere espressi in minuti o numero o testo purché nel conteggio il timer non sia costretto a ricominciare daccapo se si clicca o si digita in una cella, i secondi possono esserci se servono alla macro, ma in realtà i secondi e le ore del giorno non mi interessano)
    Solo allo scadere del conteggio del primo evento deve automaticamente o con pulsante attivarsi il timer del secondo evento, sempre secondo la somma dei minuti di B1 ed in questo caso E7 e che anche qui se superano i 60 automaticamente verranno sottratti facendo apparire l’avviso “A (somma di B1 e E7) della prossima ora innaffiare le piante “.
    Tre/ cinque minuti prima dello scadere del tempo calcolato dal Timer deve apparire l’avviso visivo e sonoro “tra pochi minuti devi innaffiare le piante”.
    Solo allo scadere del secondo evento deve attivarsi automaticamente o con pulsante la terza macro che avvia il timer secondo i minuti trovati in C11 che non è altro che la somma di B1 ed E11 dove continuando con i calcoli se la somma è maggiore di 60 automaticamente vengono sottratti generando l’avviso “A (somma di B1 e E11) della prossima ora vai a fare la spesa”.
    Tre/cinque minuti prima dello scadere del timer anche qui deve apparire l’avviso visivo e sonoro con la scritta “tra pochi minuti vai a fare la spesa”.
    Solo allo scadere del terzo evento in automatico o con pulsante si deve attivare la quarta macro che avvia il timer secondo i minuti trovati nella formula in B15 il cui calcolo si ricava dalla somma tra B1 ed E15 che come in precedenza se supera i 60 minuti automaticamente la formula li sottrae generando anche qui “A (somma di B1 e E15) della prossima ora portare il cane a spasso”.
    Tutto questo mi occorre per circa una 20 di eventi successivi suddivisi in più fogli dello stesso documento.
    Da tenere presente che mentre si clicca o si digita su una cella i minuti si aggiornano per cui credo che il timer riparta daccapo e ciò non va bene, perché come è facile intuire deve proseguire il conteggio senza interruzioni o aggiornamenti.
    Spero di essere stato esauriente nello spiegare cosa mi serve.
    Fiducioso di trovare qualcuno disponibile ad aiutarmi Vi ringrazio anticipatamente. Andy
  • OFFLINE
    dodo47
    Post: 2.213
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 12/05/2019 12:01
    Ciao
    allego un file che dovrai adattare alle tue esigenze.
    In col B i vari countDown e in col C i relativi preavvisi.

    Es se in B3 scrivi 00:02:30
    e in C3 scrivi 00:00:50
    verrai avvisato quando mancano 50 secondi allo scadere del contatore in B3.

    Allo scadere del primo CountDown partirà il secondo etc etc

    Non ci sono controlli sulla congruità dei due contatori (cioè se C è > di B).

    Se durante il countDown scrivi sul foglio, la routine tiene conto del tempo trascorso.

    Le routine si trovano nel modulo1 e nel foglio1 (evento change del foglio stesso)

    Fai le prove si pochi secondi prima di trasferirlo ed adattarlo al tuo file.

    saluti

    (NOTA: i beep del preavviso e della scadenza del contatore sono uguali, se vuoi diversificali)

    [Modificato da dodo47 12/05/2019 12:13]
    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    andy.mithos
    Post: 2
    Registrato il: 02/05/2017
    Città: FIRENZE
    Età: 78
    Utente Junior
    2016
    00 18/05/2019 19:51
    Salve Dodo47, scusa il ritardo con cui ti rispondo!!! Non mi ero accorto della Tua risposta per la quale ti ringrazio tantissimo!! Ma non so se qui esista la funzione di avviso per email. La Tua macro ha proprio ben centrato quello che desidero creare, sei davvero molto in gamba a farle!
    Io come sai vorrei anche imparare a farle ma per ora per me è un campo nuovo anche se davvero ne comprendo le potenzialità, ma alla mia veneranda età (sono del 46!) non mi pare che si possa iniziare questo bel percorso, perciò mi rivolgo agli esperti come te.
    Ora ho visto che alla fine del Countdown appare la scritta "scaduto" mentre il mio desiderio sarebbe che si attivano i MSGBOX contenenti gli avvisi già menzionati e che rivedi anche nell'allegato. Inoltre se fosse possibile vorrei che le celle B3/B5/B7/B9 prendano il tempo che si trova nelle celle J3/J5/J7/J9, che trovi in formato SOLO MINUTI e lo inseriscano automaticamente nella posizione relativa come spiegato qui: 00:MM:00 in quanto solo i Countdown in minuti mi interessano. Spero di non chiedere troppo, anche perché in seguito potrei chiederti altri "aiutini" 😊. Attendo fiducioso, Andy
  • OFFLINE
    by sal
    Post: 5.669
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 19/05/2019 08:41
    CountDown
    Ciao Andy, ed un Saluto a Domenico, ma quando lanci il conto alla rovescia fai altre cose sul foglio Excel o PC, oppure aspetti che finisca il conteggio.

    Ciao By Sal [SM=x423051]

    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    dodo47
    Post: 2.219
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 19/05/2019 10:41
    @by sal
    si, per questo ho dovuto inserire l'evento change del foglio.

    @andy
    prima di proseguire (sempre che si arrivi in fondo) ho necessità di capire il tuo operato.

    Iniziamo dal fatto che ho delle riserve sui MsgBox in quanto bloccano l'operatività finchè non vengono chiusi (forse c'è una soluzione ma è da controllare).

    Come puoi ben capire, le celle di col. B e C NON possono contenere formule.

    Conferma o correggi quanto segue:
    1) apri il file
    2) premi start
    3) in B3 inizia il conteggio a partire dai minuti riportati in J3
    4) trascorsi i minuti riportati in J2 c'è un avviso sonoro
    5) scaduto il conteggio di B3 DOVREBBE apparire il 1° msgBox
    a cascata il resto.

    saluti

    Edit visto che sei del 46 (io del 47) ricorderai il maestro Manzi di "Non è mai troppo tardi" 😉

    [Modificato da dodo47 19/05/2019 10:44]
    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    andy.mithos
    Post: 3
    Registrato il: 02/05/2017
    Città: FIRENZE
    Età: 78
    Utente Junior
    2016
    00 19/05/2019 10:43
    Ciao by sal, dalla tua domanda mi rendo conto che non hai letto tutto nella prima richiesta dove alla seconda riga c'è ben specificato cosa ne devo fare, forse anche tu sei in grado di darmi l'aiuto che cerco? Se si dammi anche tu le dritte giuste come ha fatto dodo47 che saluto e ringrazio ancora. 😊 Andy

    Buondì @dodo47 mentre rispondevo a by sal hai scritto anche tu e faccio adesso la modifica e ti rispondo confermandoti che tutto ciò che dici è corretto, spero che si arrivi ad una soluzione, ho dimenticato di dire che le macro dovrebbero fare eseguire in tutto una 20ina di eventi suddivisi su tre fogli del documento chiamato COSE DA FARE i quali a loro volta sono chiamati MATTINO, POMERIGGIO, SERA, 😊Ciao Andy
    Edit:ricordo benissimo il maestro Manzi e perciò grazie anche al vostro aiuto cercherò di imparare....
    [Modificato da andy.mithos 19/05/2019 10:55]
  • OFFLINE
    by sal
    Post: 5.670
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 19/05/2019 11:40
    CountDown
    Ciao abbiamo fatto l'adunata dei "Nonnetti" vi batto tutt'è due di qualche Anno, non di molto e spero di mantenere questa lucidità ancora per molto.

    comunque io volevo creare una cosa del genere, mi piacciono le cose diverse dal solito:



    ad ogni riga inserire un evento che parte dall'ora inserita di partenza, il contatore imposta i minuti nella colonna tempo e mano a mano il tempo diminuisce poi ad i 2 preavvisi cambia colore dell'orologio fino a diventare Rosso vicino alla scadenza o Nero a tempo scaduto.

    tenendo il file aperto, al prossimo evento diciamo che parte alle 10:30 riparte il conteggio riportando nel giallo l'operazione da fare che sarebbe l'evento fino alla prossima scadenza, quando non ci saranno più eventi perche la riga in colonna "A" vuota si blocca la macro e chiude il file.

    il problema e del "Beep" per il segnale acustico, forse non molto forte, ma risolvibile con un componente Aggiuntivo di Excel per la riproduzione del Suono, si può inserire qualsiasi suono dalla suoneria ad un brano musicale.

    non ho creato ancora niente, aspetto solo di sapere se tale metodo potrebbe andare bene.

    fate sapere, Ciao By Sal [SM=x423051]
    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    andy.mithos
    Post: 4
    Registrato il: 02/05/2017
    Città: FIRENZE
    Età: 78
    Utente Junior
    2016
    00 25/05/2019 10:19
    Salve amici, scusate il ritardo nel rispondere, ma ho avuto problemi seri di salute (ahi ahi gli acciacchi purtroppo a ME cominciano a farsi sentire!!) e solo ora mi sto riprendendo, speriamo bene.
    Salve By Sal grazie per la tua risposta e la tua idea è davvero sfizziosa, ma a me non purtroppo per un fatto pratico di utilizzo servono cosi grandi dato che come già detto in precedenza devo inserire in una stessa pagina una serie di eventi che fanno scattare le macro a cascata e queste distribuite su tre fogli, mattino, pomeriggio e sera. Comunque so bene che tutto poi si possa modificare, per cui se puoi mettimi un file secondo la tua idea con i criteri ben descritti da dodo47 ( che saluto cordialmente)
    Ho guardato con interesse il tuo sito e trovo che la prima lezione sulla macro che hai pubblicato sia molto comprensibile, hai in programma di proseguirle? Con quale cadenza le farai? Spero frequenti perché ho fretta di imparare!! Ciao Andy
    @dodo47, ciao Domenico, non so se tu abbia letto la mia risposta che ti conferma che la scaletta da te proposta è corretta? Dato che non trovo nulla temo che possa esserti sfuggita. Cordiali saluti Andy
    [Modificato da andy.mithos 25/05/2019 10:23]
  • OFFLINE
    dodo47
    Post: 2.226
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 25/05/2019 12:35
    Ciao
    si, avevo letto, ma credo che tu pretenda troppo!!

    Come ti avevo accennato, i msgbox bloccano qualsiasi esecuzione in corso. Ti avevo detto che si sarebbe potuto fare qualcosa; tutto quello che sono riuscito a fare è nell'allegato.

    NOTE:
    - all'avvio viene messo in I1 l'orario di apertura del file (statico) che non può essere la formula =Now() in quanto ad ogni variazione del foglio cambierebbero i dati in col. J.

    - quando premi start, in col B e C vengono riportati i countDown ed i preavvisi ed inizia il conteggio.

    - attualmente in col J non ci sono le tue formule ma per ciascun eventoi ho messo 2min di countdown e 1min di preavviso per testare il tutto. Le tue formule sono in col. R che puoi ricopiare dopo i test in col J

    - ho dovuto inserire i msgbox a tempo (cioè si chiudono da soli) per i motivi su esposti.

    - ATTENZIONE che se scrivi sulle celle mentre è in funzione il countDown, il tempo viene comunque considerato, quindi SE SCRIVI A RIDOSSO DELLA FINE DEL COUNTDOWN avrai problemi.

    saluti



    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    andy.mithos
    Post: 5
    Registrato il: 02/05/2017
    Città: FIRENZE
    Età: 78
    Utente Junior
    2016
    00 25/05/2019 19:09
    Salve DODO47 adesso grazie al tuo bel lavoro capisco che probabilmente stavo prendendo una strada sbagliata, perché come ho impostato io le cose succede che i minuti che devono trascorrere tra il primo evento e l'avvio del countdown del successivo, spesso siano troppi, per cui secondo me dal primo evento, la somma dei minuti tra il primo ed il secondo deve essere calcolata DAL MINUTO esatto dell'orario nel momento in cui SCATTA il secondo avviso sonoro + i minuti segnati in rosso che indicano l'avvio del secondo evento, ad esempio se in I1 sempre dal primo evento quando scocca il secondo avviso sonoro il MINUTO segna 15' che sommandolo ai 9' di R2 mi dà 24', ebbene il successivo MSGBOX DEL SECONDO EVENTO deve apparire al 24° minuto di "quell'ora" e non come ora ricavandoli da una somma numerica, il che crea un countdown di ben 24'quando semplicemente ne devono passare solo 10' per raggiungere i 24 dell’orologio.
    Spero di essere stato chiaro e che davvero come dici tu (sicuramente con ragion veduta) non chiedo troppo, per intanto ti confermo che i countdown da te impostati non si modificano se ad esempio nella cella J1 ho messo la formula =Adesso(), per cui al momento direi che vanno bene. Salutoni, Andy