Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

excel impostare un timer

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: excel impostare un timer

Postdi anna-rosa » 05/03/11 11:41

grazie alla procedura dell'f8 mi sono accorta che il problema era la disattivazione delle macro per protezione, (ora risolto)
pero, i dati del contatore , ora e delta invece di farli comparire in O2 - P2 - Q2
mi escono in O12-P12-Q12
in più eventuali modifiche del contatore ( nuova visita) invece di cancellare il dato precedente e riscrivere il dato aggiornato , scende di una colonna riportando i dati in fila 13 ,poi in fila 14 ecc.
risolto questo, cioè ke il dato del contatore 1 rimane in fila 2 ,nello specifico o2-p2-q2,
se in fila tre voglio riportare un altro foglio che chiamerei "2" sembre nel riportarmi il dato b3 ,questa volta del foglio 2 cosa devo fare? fare stessa procedura cambiando il nome del foglio e aprire un modulo 2?

oggi 5 marzo ho fatto dei passi avanti confronto al 24 febbraio :D
anna-rosa
Utente Junior
 
Post: 19
Iscritto il: 26/02/11 19:01

Sponsor
 

Re: excel impostare un timer

Postdi Anthony47 » 05/03/11 20:39

L' impostazione della macro e' stata di registrare i cambiamenti con le relative informazioni (data/ora, ritardo rispetto al cambiamento precedente).
Se ora vengono scritti da O12 in giu' e' perche' in O11 avrai gia' dei dati, a cui la macro "accoda" il propri.

Se vuoi registrare sempre in O2-P2 allora sostituisci nella macro tutte le occorrenze di Sheets("genv").Cells(Rows.Count, 1).End(xlUp) con
Sheets("genv").Range("O2")

Diventa inutile, perche' inapplicabile a questa struttura dati, il calcolo che prima si faceva in Q2 e sottostanti; quindi vanno eliminate le quattro righe da With .Sheets("genv") al primo End With.

Per quanto riguarda monitorare foglio "2":
-copia tutta la Sub CheckB3() come corretta sopra, incollala dopo End Sub, e cambiane il nome in Sub CheckB32()
-cambia in CheckB32 tutti i riferimenti Sheets("1") in Sheets("2")
-come pure cambia Range("O2") in Range("O3")
-in Sub CheckB3() elimina la riga Application.OnTime Now + TimeValue("00:01:00"), "CheckB3" 'Ripeti ogni 00h-01m-00sec e sostituiscila con Call CheckB32

oggi 5 marzo ho fatto dei passi avanti confronto al 24 febbraio
Ne sono contento!

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel impostare un timer

Postdi anna-rosa » 07/03/11 17:35

Anthony47 ha scritto:Se vuoi registrare sempre in O2-P2 allora sostituisci nella macro tutte le occorrenze di Sheets("genv").Cells(Rows.Count, 1).End(xlUp) con
Sheets("genv").Range("O2")



sono ancora io,xd
in precedenza mi riportava i valori ke mi servivano, solo che me li riportava a partire dalla fila 12 in giu' ripetendosi(le colonne o,p,q erano vuote), con questa modifica l'orario non si blocca ,continua il suo cammino come un orologgio normale riportandomela in fila 1 e non nella 2 dove avevo precedentemente chiesto, cosa sbaglio????
anna-rosa
Utente Junior
 
Post: 19
Iscritto il: 26/02/11 19:01

Re: excel impostare un timer

Postdi anna-rosa » 07/03/11 18:19

rettifico,
l'ora rimane in P2 ma si comporta come un orario normale cioè continua a precedere minuto dopo minuto.
il contatore si metti in O3 e le variazioni rimangono in O3, ( in O2 preciso ke è vuoto)
considera anche che la procedura del foglio "2" non l'ho ancora inserita, preferisco prima sistemare la situazione con una sola pagina per non complicarmi ancora di piu'.
anna-rosa
Utente Junior
 
Post: 19
Iscritto il: 26/02/11 19:01

Re: excel impostare un timer

Postdi Anthony47 » 07/03/11 23:46

Prova a pubblicare il codice finale con cui hai questo esito e vedremo di farlo funzionare insieme.

Ti aspettiamo, ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel impostare un timer

Postdi anna-rosa » 08/03/11 18:52

Sub CheckB3()
Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'Ripeti ogni 00h-00m-30sec
With ThisWorkbook
If .Sheets("1").Range("B3").Value = _
.Sheets("genv").Range("O2").Value Then Exit Sub
.Sheets("genv").Range("O2").Offset(1, 0).Value = .Sheets("1").Range("B3").Value
.Sheets("genv").Range("O2").Offset(0, 1).Value = Now
End With
End Sub

questo è il codice....IN QUESTO MODO ho il contatore in O3 e il timer che non si ferma ma continua il trascorrere del tempoin P2..in più ho provato a sostituire nel codice "O2" in "O1" per vedere che succede.... ma la situazione è identica solo scalata di una fila , cioè, contatore in "O2" e timer (sempre in costante movimento) in "P1"
anna-rosa
Utente Junior
 
Post: 19
Iscritto il: 26/02/11 19:01

Re: excel impostare un timer

Postdi Anthony47 » 08/03/11 22:16

La macro corretta e'
Codice: Seleziona tutto
Sub CheckB3()
Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'Ripeti ogni 00h-00m-30sec
With ThisWorkbook
If .Sheets("1").Range("B3").Value = _
.Sheets("genv").Range("O2").Value Then Exit Sub
.Sheets("genv").Range("O2").Value = .Sheets("1").Range("B3").Value   '<<< Modificata
.Sheets("genv").Range("O2").Offset(0, 1).Value = Now
End With
End Sub

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel impostare un timer

Postdi anna-rosa » 10/03/11 09:34

perfetto funziona, grazie mille.
inserito anche foglio 2 e va a dovere.
ultime cose... per foglio 3 ripeto procedura che ho fatto per inserire il comando del foglio 2? e cosa devo cambiare sopra? rimane sempre "32"
unaltro po' di pazienza anthony47 :)
anna-rosa
Utente Junior
 
Post: 19
Iscritto il: 26/02/11 19:01

Re: excel impostare un timer

Postdi Flash30005 » 10/03/11 09:57

In una cartella di excel non puoi avere due macro con lo stesso nome
quindi Sub CheckB32(), copiata, diverrà Sub CheckB33()
e i riferimenti relativi al foglio saranno Sheets("3") invece che Sheets("2")

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: excel impostare un timer

Postdi anna-rosa » 10/03/11 12:47

Sub CheckB3()
Call CheckB32
With ThisWorkbook
If .Sheets("1").Range("B3").Value = _
.Sheets("genv").Range("O2").Value Then Exit Sub
.Sheets("genv").Range("O2").Value = .Sheets("1").Range("B3").Value '<<< Modificata
.Sheets("genv").Range("O2").Offset(0, 1).Value = Now
End With
End Sub
Sub CheckB32()
Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'Ripeti ogni 00h-00m-30sec
With ThisWorkbook
If .Sheets("2").Range("B3").Value = _
.Sheets("genv").Range("O3").Value Then Exit Sub
.Sheets("genv").Range("O3").Value = .Sheets("2").Range("B3").Value '<<< Modificata
.Sheets("genv").Range("O3").Offset(0, 1).Value = Now
End With
End Sub
____________________________________________________________________________________________
questo è il codice per foglio 1 e foglio 2...provato e va bene.

Sub CheckB3()
Call CheckB35
With ThisWorkbook
If .Sheets("1").Range("B3").Value = _
.Sheets("genv").Range("O2").Value Then Exit Sub
.Sheets("genv").Range("O2").Value = .Sheets("1").Range("B3").Value '<<< Modificata
.Sheets("genv").Range("O2").Offset(0, 1).Value = Now
End With
End Sub
Sub CheckB32()
Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'Ripeti ogni 00h-00m-30sec
With ThisWorkbook
If .Sheets("2").Range("B3").Value = _
.Sheets("genv").Range("O3").Value Then Exit Sub
.Sheets("genv").Range("O3").Value = .Sheets("2").Range("B3").Value '<<< Modificata
.Sheets("genv").Range("O3").Offset(0, 1).Value = Now
End With
End Sub

Sub CheckB33()
Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'Ripeti ogni 00h-00m-30sec
With ThisWorkbook
If .Sheets("3").Range("B3").Value = _
.Sheets("genv").Range("O4").Value Then Exit Sub
.Sheets("genv").Range("O4").Value = .Sheets("3").Range("B3").Value '<<< Modificata
.Sheets("genv").Range("O4").Offset(0, 1).Value = Now
End With
End Sub

Sub CheckB34()
Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'Ripeti ogni 00h-00m-30sec
With ThisWorkbook
If .Sheets("4").Range("B3").Value = _
.Sheets("genv").Range("O5").Value Then Exit Sub
.Sheets("genv").Range("O5").Value = .Sheets("4").Range("B3").Value '<<< Modificata
.Sheets("genv").Range("O5").Offset(0, 1).Value = Now
End With
End Sub

Sub CheckB35()
Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'Ripeti ogni 00h-00m-30sec
With ThisWorkbook
If .Sheets("5").Range("B3").Value = _
.Sheets("genv").Range("O6").Value Then Exit Sub
.Sheets("genv").Range("O6").Value = .Sheets("5").Range("B3").Value '<<< Modificata
.Sheets("genv").Range("O6").Offset(0, 1).Value = Now
End With
End Sub

questo è il codice per 6 fogli e non va....secondo me l'errore sta
qui:
Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'Ripeti ogni 00h-00m-30sec
in ogni foglio devo scrivere come nel secondo?


o altro?
e in thisbook il codice in precedenza va sempre bene?
anna-rosa
Utente Junior
 
Post: 19
Iscritto il: 26/02/11 19:01

Re: excel impostare un timer

Postdi Anthony47 » 10/03/11 14:19

Devi avere un codice che si rischedula una volta e che fa i controlli su ognuno dei fogli.
Poiche' la catena si e' allungata (siamo a 6 fogli…) torna alla macro originale (vedi viewtopic.php?f=26&t=90591&p=517185#p517050).
Poi ti fai tante macro "slave" come la seguente (CheckB32 con modifica), ognuna con nome diversa:
Codice: Seleziona tutto
Sub CheckB32()
'Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'ELIMINATA dalle "slave"
With ThisWorkbook
If .Sheets("2").Range("B3").Value = _
.Sheets("genv").Range("O3").Value Then Exit Sub
.Sheets("genv").Range("O3").Value = .Sheets("2").Range("B3").Value
.Sheets("genv").Range("O3").Offset(0, 1).Value = Now
End With
End Sub

Poi in coda alla CheckB3 inserisci:
Codice: Seleziona tutto
End With  'ESISTENTE
Call CheckB32
Call CheckB33
' etc
' etc
End Sub  'ESISTENTE

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel impostare un timer

Postdi anna-rosa » 10/03/11 17:57

vediamo se ho capito....

Sub CheckB3()
Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'Ripeti ogni 00h-00m-30sec
With ThisWorkbook
If .Sheets("1").Range("B3").Value = _
.Sheets("genv").Range("O2").Value Then Exit Sub
.Sheets("genv").Range("O2").Value = .Sheets("1").Range("B3").Value '<<< Modificata
.Sheets("genv").Range("O2").Offset(0, 1).Value = Now
End With
End Sub

Sub CheckB32()
'Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'ELIMINATA dalle "slave"
With ThisWorkbook
If .Sheets("2").Range("B3").Value = _
.Sheets("genv").Range("O3").Value Then Exit Sub
.Sheets("genv").Range("O3").Value = .Sheets("2").Range("B3").Value
.Sheets("genv").Range("O3").Offset(0, 1).Value = Now
End With
End Sub
Sub CheckB33()
'Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'ELIMINATA dalle "slave"
With ThisWorkbook
If .Sheets("3").Range("B3").Value = _
.Sheets("genv").Range("O4").Value Then Exit Sub
.Sheets("genv").Range("O4").Value = .Sheets("3").Range("B3").Value
.Sheets("genv").Range("O4").Offset(0, 1).Value = Now
End With
End Sub

Sub CheckB34()
'Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'ELIMINATA dalle "slave"
With ThisWorkbook
If .Sheets("4").Range("B3").Value = _
.Sheets("genv").Range("O5").Value Then Exit Sub
.Sheets("genv").Range("O5").Value = .Sheets("4").Range("B3").Value
.Sheets("genv").Range("O5").Offset(0, 1).Value = Now
End With
End Sub
Sub CheckB35()
'Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'ELIMINATA dalle "slave"
With ThisWorkbook
If .Sheets("5").Range("B3").Value = _
.Sheets("genv").Range("O6").Value Then Exit Sub
.Sheets("genv").Range("O6").Value = .Sheets("5").Range("B3").Value
.Sheets("genv").Range("O6").Offset(0, 1).Value = Now
End With
End Sub
Sub CheckB36()
'Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'ELIMINATA dalle "slave"
With ThisWorkbook
If .Sheets("6").Range("B3").Value = _
.Sheets("genv").Range("O7").Value Then Exit Sub
.Sheets("genv").Range("O7").Value = .Sheets("6").Range("B3").Value
.Sheets("genv").Range("O7").Offset(0, 1).Value = Now
End With
End Sub
End With 'ESISTENTE
Call CheckB32
Call CheckB33
' etc
' etc
End Sub 'ESISTENTE


ps...
con f8 se voglio far eseguire il tutto devo selezionare sempre check3? e po eseguo o qualcosaltro per vedere se mi funziona?

il codice di in thisworkbook rimane sempre questo?

Sub CheckB3()
Beep '<<< AGGIUNTA PER PROVA
Application.OnTime Now + TimeValue("00:00:10"), "CheckB3" '<<< MODIFICATA PER PROVA
With ThisWorkbook 'ESISTENTE
'etc
anna-rosa
Utente Junior
 
Post: 19
Iscritto il: 26/02/11 19:01

Re: excel impostare un timer

Postdi Anthony47 » 11/03/11 14:30

Intendiamoci, tu hai preparato 6 macro:
ChechB3, CheckB32, CheckB33, etc

Quindi se dico "Poi in coda alla CheckB3 etc etc" intendo che devi fare cosi':
Codice: Seleziona tutto
Sub CheckB3()
Application.OnTime Now + TimeValue("00:00:30"), "CheckB3" 'Ripeti ogni 00h-00m-30sec
With ThisWorkbook
If .Sheets("1").Range("B3").Value = _
.Sheets("genv").Range("O2").Value Then Exit Sub
.Sheets("genv").Range("O2").Value = .Sheets("1").Range("B3").Value '<<< Modificata
.Sheets("genv").Range("O2").Offset(0, 1).Value = Now
End With
Call CheckB32
Call CheckB33
Call CheckB34
Call CheckB35
Call CheckB36
End Sub

(ovviamente queste Call non vanno inserite in coda a checkB36)

il codice di in thisworkbook rimane sempre questo?

Sub CheckB3()
Beep '<<< AGGIUNTA PER PROVA
Application.OnTime Now + TimeValue("00:00:10"), "CheckB3" '<<< MODIFICATA PER PROVA
With ThisWorkbook 'ESISTENTE
'etc

Questo codice non e' mai stato (mai avrebbe dovuto esserci) in ThisWorkbook, che invece contiene (vedi viewtopic.php?f=26&t=90591#p516329)
Codice: Seleziona tutto
Private Sub Workbook_Open()
Call CheckB3
End Sub


Le macro partono all' apertura del file, se il file gia' contiene CheckB3 e il codice in ThisWorkbook; comunque puoi "innescare" il tutto eseguendo CheckB3 tramite Alt-F8.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel impostare un timer

Postdi anna-rosa » 14/03/11 12:11

buon giorno a tutti voi...ancora qui.xd
ho inserito i singoli moduli come mi è stato detto
modulo 1
Sub CheckB3()
Application.OnTime Now + TimeValue("00:01:00"), "CheckB3" 'Ripeti ogni 00h-01m-00sec
With ThisWorkbook
If .Sheets("1").Range("B3").Value = _
.Sheets("genv").Range("O2").Value Then Exit Sub
.Sheets("genv").Range("O2").Value = .Sheets("1").Range("B3").Value '<<< Modificata
.Sheets("genv").Range("O2").Offset(0, 1).Value = Now
End With
Call CheckB32
Call CheckB33
Call CheckB34
Call CheckB35
Call CheckB36

End Sub


modulo 2

Sub CheckB32()
'Application.OnTime Now + TimeValue("00:01:00"), "CheckB3" 'ELIMINATA dalle "slave"
With ThisWorkbook
If .Sheets("2").Range("B3").Value = _
.Sheets("genv").Range("O3").Value Then Exit Sub
.Sheets("genv").Range("O3").Value = .Sheets("2").Range("B3").Value
.Sheets("genv").Range("O3").Offset(0, 1).Value = Now
End With
End Sub

modulo 3
Sub CheckB33()
'Application.OnTime Now + TimeValue("00:01:00"), "CheckB3" 'ELIMINATA dalle "slave"
With ThisWorkbook
If .Sheets("3").Range("B3").Value = _
.Sheets("genv").Range("O4").Value Then Exit Sub
.Sheets("genv").Range("O4").Value = .Sheets("3").Range("B3").Value
.Sheets("genv").Range("O4").Offset(0, 1).Value = Now
End With
End Sub

modulo 4-5
come sopra con valori cambiati

il problema ke si presenta è ke i contatori che subiscono variazione aggiornano il loro orario quando il contatore 1 riceve variazione...cioè se il sito uno non riceve visita gli altri siti mi registano tramite query la variazione ma non aggiornano l'orario.
da cosa dipende?
anna-rosa
Utente Junior
 
Post: 19
Iscritto il: 26/02/11 19:01

Re: excel impostare un timer

Postdi Anthony47 » 14/03/11 15:36

E c' ha pure ragione…
Metti, in CheckB3 le varie Call CheckB32 / Call CheckB33 / etc in testa, subito dopo Sub CheckB3(), e non in coda.

Non hai bisogno di mettere una sola macro per Modulo (vale per la prossima volta).

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel impostare un timer

Postdi anna-rosa » 14/03/11 19:02

perfetto ora funziona come deve.... grazie mille per le dritte (diciamo la verità...grazie per aver fatto tutto il lavoro...xd)
avrei un'ultima cosa da chiedere, ma non so se è il luogo giusto in questa discussione ne se si puo fare senza toccare molto il lavoro già fatto.
essendo che son 6 contatori ma in futuro credo che potrebbero aumentare, è possibile, ai dati piu recenti di evidenziarsi per spiccare più in evidenza? che so, anche l'orario ,per tipo tot minuti diventi rosso e poi se superato tale tempo ritorna il solito colore nero....
oppure in colonna q in cella corrispondente un simbolo per segnalare l'aggiornamento
comunque mi ritengo soddisfatta già fin qui... sarebbe un aggiunta per avere piu chiarezza nella lettura dei dati
anna-rosa
Utente Junior
 
Post: 19
Iscritto il: 26/02/11 19:01

Re: excel impostare un timer

Postdi Anthony47 » 15/03/11 01:03

Per ottenere che per un tot di minuti la cella che riporta data/ora del cambiamento (es P2) si colori per un tot di minuto, aggiungi in testa alla sola CheckB3 (prima della sequenza di Call)
Codice: Seleziona tutto
ThisWorkbook.Sheets("genv").Range("O3").Calculate


Poi applica a P2-P3-etc una formattazione condizionale
-Condizione "Il valore della cella è", "maggiore di", =Adesso()-2/1440
-premi Formato, tab Motivo, assegna il colore che preferisci
-Ok, Ok
Nella formula di prima, il "2" in 2/1440 rappresenta per quanti minuti quella cella rimane in evidenza; modifica a piacere.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "excel impostare un timer":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti