Condividi:        

rilevazione ora modifica cella

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

rilevazione ora modifica cella

Postdi marcoc » 02/10/19 21:30

ciao a tutti,
ho un file in una cartella condivisa con 20 persone che devono aprire e compilare periodicamente delle celle, a fianco del proprio nome.
E' possibile una formula da mettere in una cella in una colonna nascosta che mi rilevi giorno e ora della modifica della cella adiacente?
ho provato con
=SE(B1="";"";ADESSO())
ma si aggiorna ad ogni apertura del file; la formula dovrebbe "bloccare" il momento della modifica della cella.
si può fare secondo voi?
Avatar utente
marcoc
Utente Senior
 
Post: 317
Iscritto il: 22/03/07 21:58
Località: Nerviano

Sponsor
 

Re: rilevazione ora modifica cella

Postdi Anthony47 » 02/10/19 22:20

Non puoi farlo con una formula ma puoi farlo (anche in modo piu' articolato) con una macro.
Ad esempio, questa macro di Worksheet_Change monitorizza una serie di celle e a ogni cambiamento registra in un altro foglio:
-data /ora; nome dell'utente; indirizzo di cella; valore della cella
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myArea As String, myC As Range, myLog As Worksheet, mtArea As Range
'
Set myLog = Sheets("Foglio2")   '<<< Il foglio in cui vuoi registrare le modifiche
myArea = "A2:A10,B2,D1:E10"     '<<< Le celle che vuoi monitorare
'
If Target.Rows.Count > 10000 Then
    Set mtArea = Application.Intersect(Target, ActiveSheet.UsedRange)
Else
    Set mtArea = Target
End If
If Not mtArea Is Nothing Then
    For Each myC In mtArea
        If Not Application.Intersect(myC, Range(myArea)) Is Nothing Then
            mynext = myLog.Cells(Rows.Count, 1).End(xlUp).Row + 1
            myLog.Cells(mynext, 1) = Now
            myLog.Cells(mynext, 2) = Environ("UserName")
            myLog.Cells(mynext, 3) = myC.Address(False, False)
            myLog.Cells(mynext, 4) = myC.Value
        End If
    Next myC
End If
End Sub

Il codice va messo nel modulo vba "di classe" del foglio su cui lavori; vedi viewtopic.php?f=26&t=103893&p=647675#p647675
Le righe marcate <<< vanno personalizzate come da commento; nel codice pubblicato le celle tenute sotto controllo sono
A2:A10
B2
D1:E10
Imposta i tuoi intervalli da controllare rispettando la sintassi data

Il foglio destinato al log delle modifiche lo nasconderai; per questo e' bene che nel modulo QuestaCartellaDiLavoro inserisci questa macro doi WorkbookOpen:
Codice: Seleziona tutto
Private Sub Workbook_Open()
Sheets("Foglio2").Visible = xlVeryHidden
End Sub

Per visualizzare il foglio dovrai agire nelle Proprieta' di Foglio2, impostando a mano Visible = XlSheetVisible
Oppure ti creerai una macro che contiene l'istruzione
Codice: Seleziona tutto
Sheets("Foglio2").Visible = True

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19213
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: rilevazione ora modifica cella

Postdi marcoc » 07/10/19 12:11

ottimo, grazie!
Avatar utente
marcoc
Utente Senior
 
Post: 317
Iscritto il: 22/03/07 21:58
Località: Nerviano


Torna a Applicazioni Office Windows


Topic correlati a "rilevazione ora modifica cella":


Chi c’è in linea

Visitano il forum: Nessuno e 49 ospiti