لوری می داند که چگونه ویژگی های یک ورک بوک اکسل را مشاهده کند. با این حال، کاری که او می خواهد انجام دهد، مشاهده ویژگی های مشابه نسبت به کاربرگ های فردی است. به عنوان مثال، او نمی پرسد آیا راهی برای مشاهده ویژگی هایی مانند تاریخ ایجاد، تاریخ اصلاح، نویسنده یا "آخرین اصلاح توسط" برای کاربرگ های جداگانه وجود دارد.
متأسفانه، اکسل چنین اطلاعاتی را برای کاربرگ ها پیگیری نمی کند. تنها راه حلی که ما توانسته ایم کشف کنیم این است که رکورد خود را از اطلاعات مربوط به کاربرگ های موجود در ورک بوک ایجاد کنیم. یک راه واضح برای توسعه یک کنترل کننده رویداد Workbook_SheetChange. در زیر نمونه ای از مواردی است که می توانید به شی ThisWorkbook در ویرایشگر ویژوال بیسیک اضافه کنید:
Private Sub Workbook_SheetChange(ByVal ws As Object, ByVal Target As Range)
Dim s As Worksheet
Dim J As Integer
Dim FoundIt As Boolean
On Error Resume Next
Set s = Worksheets("Stats")
On Error GoTo 0
Application.EnableEvents = False
If s Is Nothing Then
Stats worksheet did not exist
Set s = Worksheets.Add(After:=Worksheets(Worksheets.Count))
s.Name = "Stats"
s.Range("A1") = "Worksheet"
s.Range("B1") = "Creator"
s.Range("C1") = "Last Modified"
s.Range("D1") = "Modifed By"
With s.Range("A1:D1")
.Font.Bold = True
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeBottom).Weight = xlThin
End With
s.Range("A2") = s.Name
s.Range("B2") = s.CustomProperties.Creator
s.Range("C2") = Format(Now, " mm/dd/yyyy hh:mm am/pm")
s.Range("D2") = Application.UserName
End If
J = 2
FoundIt = False
While (s.Cells(J, 1) <> "")
If s.Cells(J, 1) = ws.Name Then
FoundIt = True
s.Cells(J, 3) = Format(Now, " mm/dd/yyyy hh:mm am/pm")
s.Cells(J, 4) = Application.UserName
End If
J = J + 1
Wend
If Not FoundIt Then
Worksheet name not found
s.Cells(J, 1) = ws.Name
s.Cells(J, 2) = ws.CustomProperties.Creator
s.Cells(J, 3) = Format(Now, " mm/dd/yyyy hh:mm am/pm")
s.Cells(J, 4) = Application.UserName
End If
ws.Activate
Application.EnableEvents = True
End Sub
هر زمان که شما تغییری در ورک بوک ایجاد کنید، کنترل کننده رویداد فعال می شود. ابتدا بررسی می کند که آیا یک کاربرگ به نام Stats وجود دارد یا خیر. اگر نه، کاربرگ ایجاد می شود و اطلاعات ابتدایی به آن اضافه می شود. کنترل کننده در کاربرگ آمار نگاه می کند تا تعیین کند آیا داده های موجود در آنجا دارای ردیفی برای کاربرگ هستند که در آن تغییر رخ داده است. اگر نه، یک ردیف اضافه می شود، اما اگر چنین است، اطلاعات موجود در ردیف به روز می شود.
کنترل کننده تنها چهار بخش از اطلاعات را ردیابی می کند - نام کاربرگ، سازنده، تاریخ آخرین تغییر و نام کاربری که تغییر را انجام داده است. (ویژگی Creator یک مقدار عددی مربوط به برنامه ای را نشان می دهد که کاربرگ را ایجاد کرده است. این برای انسان خیلی مفید نیست، و من آن را به عنوان مثالی گویا از نحوه ذخیره اطلاعات اضافه کردم.)
به یاد داشته باشید، این تنها یک راه حل است و باید به دقت در نظر بگیرید که چه نوع اطلاعاتی را می خواهید برای کاربرگ های خود ردیابی کنید. سپس می توانید کد را تغییر دهید تا آن تمایل را منعکس کند.