Ako si pokušla sa praćenjem promena i listanjem na novom listu
http://office.microsoft.com/en-us/excel/HP052038481033.aspx i to ti ne odgovara, onda možeš da napraviš makro koji će da registruje promene kako tebi odgovara - ali to nosi svoje probleme.
U osnovi treba da reaguješ na događaj Change radnog lista i da tu postaviš svoj kod koji zapisuje izvršenu promenu. Iz tvog pitanja pretpostavljam da ne želiš praćenje promena svih ćelija nego samo nekog opsega - Imenovao sam ovaj opseg TrackingRng. Takođe pretpostavljam da ćeš imati potrebu da uključiš/isključiš praćenje promena pa sam za to predvideo jednu ćeliju u kojoj upisuješ vrednost TRUE za uključivanje upisivanja promena. Osnovni kod bi bio
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OldValue As Variant
' Da li je ukljucena istorija i da li je celija u opsegu koji se menja
If ThisWorkbook.Sheets("Promene").Range("HistoryOn").Value = True And _
Not (Application.Intersect(Target, Range("TrackingRng")) Is Nothing) Then
' Zapamti prethodnu vrednost preuzeto sa www.developerfood.com
With Application
.EnableEvents = False
.Undo
OldValue = Target.Cells(1).Value
.Undo
.EnableEvents = True
End With
UpisiPromenu Target, OldValue
End If
End Sub
Sub UpisiPromenu(cl As Range, OldValue As Variant)
' Rutina koja upisuje podatke o izmeni u list Promene
' P.Jovanovic za elitesecurity.org
'
Dim shHist As Worksheet
Dim rw As Long
Set shHist = ThisWorkbook.Sheets("Promene")
'Upis promene
With shHist
rw = .Range("A65536").End(xlUp).Row + 1 ' Nalazenje prvog praznog reda
.Cells(rw, 1).Value = cl.Address ' Adresa celije koja se menja
.Cells(rw, 2).Value = Date 'tekuci datum
.Cells(rw, 3).Value = Time 'tekuce vreme
.Cells(rw, 4).Value = cl.Value - OldValue 'Promena vrednosti
End With
End Sub
Pošto ne znam kako su ti organizovani podaci (gde se nalaze naslovi kolona/redova) umesto toga upisuje se adresa ćelije, ali ako postoji jasna organizacija (npr. naslovi u prvoj koloni/redu) to nije problem prepraviti. Takođe zbog jednostavnosti upisivanje se vrši u posebnom listu - umesto toga može u posebnoj tabeli .
Ono što jeste problem je šta se dešava kad podaci koje uneseš nisu numerički ili još interesantnije kad menjaš više ćelija? Ako isključivo ti radiš sa tabelom i znaš probleme možda je to prihvatljivo. Ipak presretanje događaja Change nosi puno rizika, jer je teško predvideti sve akcije korisnika u kojima će se ovaj događaj aktivirati. Nisam siguran ni kako će se Undo ponašati nakon uključivanja makroa - koliko sam probao u verzij 2007 radi ali znam da je to često problem sa makroima.
U prilogu je jednostavan primer na kome ovo možeš da testiraš u listu "Promena" upisuju se promene u koloni C, kad je praćenje uključeno.
Nije to loše Rembrante, samo što ne bi dodao još malo boje?