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#p647675Le 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