Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Riportare la data di modifica di una cella

1,897 views
Skip to first unread message

Final Job

unread,
Sep 17, 2016, 11:53:53 AM9/17/16
to
Buongiorno
Avete uno spunto per rilevare e registrare la data e l'ora in cui i
valori di alcune celle di un foglio subiscono una variazione?

Due casi per spiegare meglio:

1)
Colonne P e S contengono dati.
Colonne O e R registrano la data e l'ora delle loro variazioni.

Se le celle della colonna P subiscono una variazione, nella colonna O
(stessa riga) viene aggiornata la data e l'ora alla quale la variazione
avviene. Stesso funzionamento per le variazioni nella colonna S con data
in R.

2)
La colonna B riporta, riga per riga, la data e l'ora di variazione delle
celle P o S (basta che vari una delle due).

Grazie
Ale

casanmaner

unread,
Sep 17, 2016, 1:38:15 PM9/17/16
to
Ciao Ale,
ritengo che si debba sfruttare l'evento Change del foglio di lavoro.
Ma se ad esempio nella cella P10 ci vosse il valore PIPPO e tu facessi doppio click nella cella o F2 e poi, senza apportare alcuna modifica e quindi lasciando il valore PIPPO, dessi invio vorresti che anche per queste azioni, che non hanno però apportato modifiche di valore alla cella, venisse memorizzata la data e ora?

casanmaner

unread,
Sep 17, 2016, 2:10:32 PM9/17/16
to
Comunque in attesa della risposta ho provato considerando che eventuali digitazioni dello stesso identico valore non vengano considerate variazioni di cui registrare la data e ora nel modulo VBA del foglio ho inserito queste righe di comando che incollo più sotto.
Nota che la variabile "ValoreOriginario" l'ho dicharata Variant perché non so che tipo di valori sono presenti nelle colonne P e S.

'---
Option Explicit
Const RigaIntestazioni As Long = 5
Const iColonnaP As Long = 16
Const iColonnaS As Long = 19
Dim ValoreOriginario As Variant
Dim DataOraVariazione As Date

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Cells.Count > 1 Then Exit Sub
DataOraVariazione = Now
Application.EnableEvents = False
On Error GoTo Esci
If .Row > RigaIntestazioni Then
If .Column = iColonnaP Then
If .Value <> ValoreOriginario Then
.Offset(0, -1).Value = DataOraVariazione
.Offset(0, -14).Value = DataOraVariazione
End If
End If
If .Column = iColonnaS Then
If .Value <> ValoreOriginario Then
.Offset(0, -1).Value = DataOraVariazione
.Offset(0, -17).Value = DataOraVariazione
End If
End If
End If
End With
Esci:
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
If .Row > RigaIntestazioni And .Column = iColonnaP Or .Column = iColonnaS Then
ValoreOriginario = ActiveCell.Value
End If
End With
End Sub
'---


Qui trovi un file di esempio:
https://www.dropbox.com/s/uiwk93eqmocr1jd/Riportare%20la%20data%20di%20modifica%20di%20una%20cella.xlsm?dl=0

Final Job

unread,
Sep 17, 2016, 2:10:51 PM9/17/16
to
Il 17/09/2016 19:38, casanmaner ha scritto:

> Ciao Ale,
> ritengo che si debba sfruttare l'evento Change del foglio di lavoro.
> Ma se ad esempio nella cella P10 ci vosse il valore PIPPO e tu facessi doppio click nella cella o F2 e poi,
> senza apportare alcuna modifica e quindi lasciando il valore PIPPO,
dessi invio vorresti che anche per queste azioni,
> che non hanno però apportato modifiche di valore alla cella, venisse memorizzata la data e ora?

Ciao Casanmaner, ben trovato.
Sarebbe utile che si rilevasse il solo caso della variazione del dato.

Io immaginavo di inserire, da qualche parte nel foglio, una colonna di
appoggio per ogni colonna da monitorare che contenga i valori "vecchi" e
poi una funzione che monitorizzi le due celle.

Nel momento in cui si rileva la differenza di valori fra la colonna del
dato e quella di appoggio, far partire un codice che scrive data e ora e
poi aggiorna anche la colonna di appoggio preparandola ad una nuova
variazione.

Fantascienza, insomma!

Buona serata
e grazie
Ale

Final Job

unread,
Sep 17, 2016, 2:16:51 PM9/17/16
to
Il 17/09/2016 20:10, casanmaner ha scritto:

> Comunque in attesa della risposta ho provato considerando che eventuali digitazioni
dello stesso identico valore non vengano considerate variazioni di cui
registrare la data e ora
nel modulo VBA del foglio ho inserito queste righe di comando che
incollo più sotto.
> Nota che la variabile "ValoreOriginario" l'ho dicharata Variant perché non so che tipo di valori
sono presenti nelle colonne P e S.

Scusa ma ho visto il tuo post solo dopo aver inviato la mia risposta
precedente.

Appena ho il computer sotto mano lancio il foglio che hai inviato tu e
ti dico.

Grazie Casanmaner
Buona serata

Final Job

unread,
Sep 17, 2016, 3:42:52 PM9/17/16
to
Funziona.
E' evidente che il mio approccio allo scenario è da "funzione" piuttosto
che da "codice".

Ho capito il tutto. Ti ringrazio
Ale

casanmaner

unread,
Sep 17, 2016, 5:25:42 PM9/17/16
to
Bene :-)
Buona serata a te :-)

andrea.p...@sarastrading.ch

unread,
Oct 10, 2017, 3:23:25 PM10/10/17
to
scusate se mi chiedo un favore percaso esiste una traduzione d questo codice che è possibile utilizzare sui fogli di google drive?
grzie mille

--


Questo messaggio e i suoi allegati possono contenere informazioni riservate
e sono destinate esclusivamente alle persone indicate. La diffusione, copia
o qualsiasi altra azione derivante dalla conoscenza di tali informazioni
sono rigorosamente vietate. Qualora abbiate ricevuto questo documento per
errore siete cortesemente pregati di darne immediata comunicazione al
mittente e di provvedere alla sua distruzione. Grazie.


This message (including any attachments) contains confidential information
intended for a specific individual and purpose, and is protected by law. If
you are not the intended recipient, you should delete this message. Any
disclosure, copying, or distribution of this message, or the taking of any
action based on it, is strictly prohibited. Thank you.
0 new messages