دانش آموزان Dorothys در حال سفارشی سازی یک ورک بوک شبیه سازی دسته چک هستند و نام پیش فرض را با نام خود جایگزین می کنند. به عنوان مثال، او از آنها می خواهد که "جیسون اندرسون" را جستجو کنند و نام را با "سو اسمیت" جایگزین کنند. 22 مورد از "جیسون اندرسون" در کادرهای متنی در سراسر هشت برگه کاربرگ و چندین مورد دیگر در خود کاربرگ ها وجود دارد. دوروتی تعجب می کند که چگونه می تواند همه رخدادهای کاربرگ و همه موارد نظر را در یک زمان پیدا و جایگزین کند.
هیچ راهی برای انجام این کار بدون استفاده از ماکرو وجود ندارد. ماکرو باید از طریق هر سلول در ورک بوک، هر نظر و هر کادر متنی نگاه کند تا ببیند آیا نیاز به انجام تغییرات است یا خیر. در زیر نمونه ای از نحوه انجام این کار آورده شده است:
Sub ReplaceNames()
Dim sDefaultName As String
Dim sNewName As String
Dim sht As Worksheet
Dim cmt As Comment
Dim wks As Worksheet
Dim sCmt As String
Dim shp As Shape
sDefaultName = "Jason Anderson"
sNewName = InputBox("Enter your first and last name.", _
"Name Replacement")
Replace cell text
For Each sht In ActiveWorkbook.Worksheets
sht.Cells.Replace what:=sDefaultName, _
Replacement:=sNewName, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
Next sht
Replace comment text
For Each wks In ActiveWorkbook.Worksheets
For Each cmt In wks.Comments
sCmt = cmt.Text
If InStr(sCmt, sDefaultName) <> 0 Then
sCmt = Application.WorksheetFunction. _
Substitute(sCmt, sDefaultName, sNewName)
cmt.Text Text:=sCmt
End If
Next cmt
Next wks
Set wks = Nothing
Set cmt = Nothing
Replace text box text
On Error Resume Next
For Each wks In ActiveSheet.Parent.Worksheets
For Each shp In wks.Shapes
With shp.TextFrame.Characters
.Text = Application.WorksheetFunction.Substitute( _
.Text, sDefaultName, sNewName)
End With
Next shp
Next wks
End Sub
ماکرو از کاربر می خواهد نام جدیدی وارد کند و سپس سلول ها، نظرات و جعبه های متن را جستجو می کند تا ببیند آیا نام پیش فرض ("جیسون اندرسون") وجود دارد یا خیر. اگر چنین است، جایگزین مناسب ساخته می شود.
اگر نمی خواهید از ماکروها برای انجام جستجو استفاده کنید، شاید تغییر ساختار ورک بوک مفید باشد. برای مثال، می توانید یک «کاربرگ ورودی داده» ایجاد کنید که در آن اطلاعات رایج - مانند نام افراد - وارد شود. در کاربرگ های دیگر، نام کاربرگ ورودی داده با استفاده از فرمول ها ارجاع داده می شود. بنابراین، یک تغییر در کاربرگ ورودی داده، و نام در همه کاربرگ های دیگر تغییر می کند.
استفاده از این رویکرد می تواند با نظرات نیز کار کند. می توانید نظر یا شکل را انتخاب کنید و در نوار فرمول، فرمول مرجعی مانند این را وارد کنید:
=MyName
این فرض می کند که نام کاربران، در کاربرگ ورودی داده، با محدوده نام گذاری شده MyName مرتبط شده است. اگر نیاز به اطلاعات اضافی در نظر یا شکل باشد، می توانید آن متن را در سلولی در کاربرگ ورودی داده بسازید و سپس محتوای آن سلول را به نظر یا شکل اختصاص دهید، درست همانطور که برای محدوده نام گذاری شده MyName ذکر شده است.