دیوید به درستی خاطرنشان می کند که اکسل ابزارهای ممیزی ( Trace Dependents و Trace Precedents ) را ارائه می دهد که راه بسیار مفیدی برای پیگیری اتفاقاتی است که در کاربرگ های بزرگ اتفاق می افتد. با این حال، رابط واقعی فقط سلولها را در یک منطقه کوچک فهرست میکند و دیوید نمیتواند به راحتی این فهرست سلولها را برای تجزیه و تحلیل و دستکاری آن کپی کند. هنگامی که او از Trace Dependents بر روی یک سلول مهم در یک کاربرگ بزرگ استفاده می کند، کادر محاوره ای کوچک می تواند حاوی چند صد مرجع باشد. دیوید متعجب است که آیا راه نسبتاً آسانی برای دریافت این اطلاعات به فرمت قابل استفاده تر، مانند یک کاربرگ خالی یا کتاب کار دیگر وجود دارد.
واضح است که هیچ راهی برای انجام این کار با دستورات بومی اکسل وجود ندارد، اما می توانید یک ماکرو ایجاد کنید که اطلاعات مورد نظر شما را استخراج کند. ماکرو زیر سلولهای وابسته را برای هر سلولی که هنگام اجرای ماکرو انتخاب شده است فهرست میکند:
Sub ListDependents()
Dim rArea As Range
Dim rCell As Range
Dim rDep As Range
Dim lRow As Long
Dim sCellAddr As String
sCellAddr = ActiveCell.Address(False, False)
On Error Resume Next
Set rDep = ActiveCell.Dependents
If rDep Is Nothing Then
MsgBox sCellAddr & " has no dependents"
Exit Sub
End If
On Error GoTo 0
Worksheets.Add
lRow = 1
Cells(lRow, 1).Value = "Dependents for " & sCellAddr
For Each rArea In rDep
For Each rCell In rArea
lRow = lRow + 1
Cells(lRow, 1) = rCell.Address(False, False)
Next
Next
Set rArea = Nothing
Set rCell = Nothing
Set rDep = Nothing
End Sub
هنگامی که ماکرو برای اولین بار اجرا می شود، بررسی می کند که آیا وابستگی برای سلول وجود دارد یا خیر. اگر وجود ندارد، به شما اطلاع داده می شود و ماکرو خارج می شود. اگر وابستگی وجود داشته باشد، یک کاربرگ جدید به کارنامه اضافه می شود و وابستگان سلول به کاربرگ اضافه می شوند.
اگر میخواهید ماکرو به جای آن موارد پیشین را فهرست کند، تنها کاری که باید انجام دهید این است که تمام نمونههای «وابستهها» در ماکرو را به «سابقه» تغییر دهید.