Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Timestamp in Excel

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

Timestamp in Excel

Postdi gaetano73 » 12/01/12 15:35

Ciao a tutti,

ho la necessità di "fissare un momento temporale" al verificarsi di un certo evento (in Excel). Mi spiego meglio.
Se la cella A1 viene riempita (quindi <> ""), la cella B1 deve riportare data e ora del momento in cui questo è avvenuto.
Devo quindi realizzare una sorta di Timestamp della cella A1.
Con quali funzioni/macro lo posso implementare?

Grazie

Gaetano
gaetano73
Utente Senior
 
Post: 247
Iscritto il: 03/09/02 18:36

Sponsor
 

Re: Timestamp in Excel

Postdi Anthony47 » 12/01/12 15:47

Potrai usare l' evento Worksheet_Change; per un aiuto piu' concreto dovresti spiegare meglio la logica:
-vuoi il timestamp solo quando/tutte le volte che A1 passa da vuoto a non vuoto, o in caso di qualsiasi cambiamento, o solo una volta e poi mai piu'?

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: Timestamp in Excel

Postdi gaetano73 » 12/01/12 16:20

Solo la prima volta che passa da vuoto a non vuoto e mai più.

PS: se non chiedo troppo, mi spieghi come fare anche nel caso di qualsiasi cambiamento?
gaetano73
Utente Senior
 
Post: 247
Iscritto il: 03/09/02 18:36

Re: Timestamp in Excel

Postdi Flash30005 » 12/01/12 20:15

Per inserire la data in B1 solo la prima volta puoi copiare questo codice nel vba del foglio nel quale vari la cella A1
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If ValA1 = "" Then Range("B1").Value = Now
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ValA1 = Range("A1").Value
End Sub


Nel caso in cui vuoi sempre aggiornare la data ad ogni variazione della cella A1 è sufficiente solo questo codice
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
Range("B1").Value = Now
End Sub


Per accedere al Vba premi Alt+F11
avrai due finistre in quella di sinistra clicca due volte sul foglio interessato
e a destra incolli il codice che avrai copiato qui
poi inserisci un valore in A1

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: Timestamp in Excel

Postdi Anthony47 » 12/01/12 22:59

Il codice di Flash potrebbe provocare il riaggiornamento di B1 se come prima operazione all' apertura del file si aggiorna A1, e inoltre aggiorna B1 se A1 viene cancellata e poi riscritta.
Il mio suggerimento e':
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If Range("B1").Value = "" Then Range("B1").Value = Now
End Sub
Tasto dx sul tab col nome foglio su cui lavori, scegli Visualizza codice, copia il codice e incollalo nel frame di dx, in sostituzione della attuale Sub Worksheet_Change.
In questo modo se B1 contiene gia' un valore non verra' modificata.
Se pensi di fare una procedura fiscale dovresti provvedere a proteggere il foglio per evitare che B1 venga cancellato, provvedendo all' Unprotect prima della scrittura del timestamp e successivo Protect; ovviamente a quel punto dovresti proteggere con password anche l' accesso al codice.

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: Timestamp in Excel

Postdi gaetano73 » 13/01/12 10:16

OK. Perfetto!
Un'ultima informazione:
vorrei che la "regola" fosse applicata a più celle, per esempio ad A1, A2... fino ad A5; detta regola deve agire indipendentemente su ciascuna cella ovvero, all'apertura del file potrei avere A1 e A3 già precedentemente riempite e quindi B1 e B3 già Timestampate. Se poi vado a popolare A2 mi si Timestampa B2 e così via.

Ho provato a modificare il codice come segue:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1:$A$5" Then Exit Sub
If Range("B1").Value = "" Then Range("B1").Value = Now
If Range("B2").Value = "" Then Range("B2").Value = Now
If Range("B3").Value = "" Then Range("B3").Value = Now
If Range("B4").Value = "" Then Range("B4").Value = Now
If Range("B5").Value = "" Then Range("B5").Value = Now
End Sub


Non funziona.
Perdonatemi se ho scritto orrori :oops:

PS1: potreste indicarmi un sito dal quale potermi erudire in Visual Basic?
PS2: se non è il momento e/o posto giusto per postare il PS1 vi prego di scusarmi
gaetano73
Utente Senior
 
Post: 247
Iscritto il: 03/09/02 18:36

Re: Timestamp in Excel

Postdi Flash30005 » 13/01/12 11:08

Prova questa

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
CheckArea = "A1:B6"
If Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then Exit Sub
RR = Target.Row
Application.EnableEvents = False
If Range("A" & RR).Value <> "" And Range("B" & RR).Value = "" Then Range("B" & RR).Value = Now
Application.EnableEvents = True
End Sub


Ciao

Risp. Ps1 e Ps2 - Questo è il sito giusto! :D
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: Timestamp in Excel

Postdi gaetano73 » 13/01/12 11:54

Beautiful!

Se voglio che le celle mi si Timestampino ad ogni riempimento scrivo questo codice:

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
CheckArea = "A1:B6"
If Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then Exit Sub
RR = Target.Row
Application.EnableEvents = False
If Range("A" & RR).Value <> "" Then Range("B" & RR).Value = Now
Application.EnableEvents = True
End Sub


Giusto?
PS1 e PS2: grazie 1E+1000 :lol:
gaetano73
Utente Senior
 
Post: 247
Iscritto il: 03/09/02 18:36

Re: Timestamp in Excel

Postdi Flash30005 » 13/01/12 13:25

Si,

Quando cancelli in A non avrai l'aggiornamento di B
e quindi potrai anche cancellare B

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-


Torna a Applicazioni Office Windows


Topic correlati a "Timestamp in Excel":


Chi c’è in linea

Visitano il forum: Nessuno e 19 ospiti