امیر در سرتاسر اسناد خود از رنگ های برجسته متفاوت استفاده می کند. وقتی از Find and Replace برای یافتن متن هایلایت شده استفاده می کند، با تمام رنگ های هایلایت یکسان رفتار می کند. امیر به طور خاص میخواهد از Find and Replace استفاده کند تا فقط متنهایی را که با رنگ زرد برجسته شدهاند، بیابد و از هر رنگ برجسته دیگری که در سند استفاده میشود چشمپوشی کند.
قبل از پرداختن به نحوه انجام این کار، مهم است که برای لحظه ای در مورد شرایط بحث کنیم. هنگام استفاده از اصطلاح "رنگ برجسته"، برخی از مردم فکر می کنند که به رنگ اعمال شده در متن خاصی اشاره دارد. این نیست. برجسته کردن رنگ فونت را تغییر نمی دهد. برجسته سازی با استفاده از ابزار Text Highlight Color انجام می شود که در گروه Font در زبانه Home نوار موجود است. (شکل 1 را ببینید.)

شکل 1. Word به شما امکان می دهد متن را با استفاده از رنگ های مختلف برجسته کنید.
هنگامی که از کادر گفتگوی Find and Replace استفاده می کنید، می توانید تعیین کنید که می خواهید متن برجسته شده را جستجو کنید. (نقطه درج را در کادر Find قرار دهید، روی Format کلیک کنید، سپس روی Highlight کلیک کنید.) وقتی روی Find Next کلیک می کنید، Word بدون توجه به رنگ مورد استفاده برای برجسته کردن متن، متن برجسته شده بعدی را انتخاب می کند. به عبارت دیگر، شما نمی توانید مشخص کنید که فقط می خواهید متنی را پیدا کنید که با رنگ زرد یا آبی یا سبز یا هر رنگ دیگری برجسته شده است. با همه آن یکسان رفتار می شود.
ما نتوانستهایم راه قابل اعتمادی برای حل این موضوع پیدا کنیم. برخی از اطلاعاتی که دیدهایم نشان میدهد که Word فقط هر رنگ برجستهای را که در ابزار Text Highlight Color مشخص شده است را پیدا میکند، اما این درست نیست. افراد دیگر اشاره کرده اند که اگر قبل از نمایش کادر محاوره ای Find and Replace، متن هایلایت شده (که با رنگی که می خواهید مشخص شده است) را انتخاب کنید، با کلیک روی Find Next فقط آن رنگ هایلایت پیدا می شود. این نیز درست نیست. در همه موارد، Find Next هر متن برجسته شده را بدون توجه به رنگ مورد استفاده برای هایلایت پیدا می کند.
تنها راه حل این مشکل استفاده از یک ماکرو برای انجام یافتن است. VBA به شما امکان می دهد رنگ مورد استفاده برای برجسته کردن متن را تشخیص دهید، به همین دلیل است که این روش کار خواهد کرد. ماکروی زیر از Find and Replace برای انجام یافتن استفاده می کند، اما سپس بررسی می کند که مشخصه HighlightColorIndex برای آنچه پیدا شده است چیست. اگر برابر با wdYellow (شماری برای رنگ زرد) باشد، متن انتخاب شده و ماکرو خارج می شود.
Sub FindNextYellow()
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = ""
.MatchWildcards = False
.Forward = True
.Wrap = wdFindContinue
.Highlight = True
Do
.Execute
Loop Until Selection.Range.HighlightColorIndex = wdYellow _
Or Not .Found
Selection.Range.Select
End With
End Sub
می توانید رنگ های مختلف را به سادگی با تغییر شمارش wdYellow به شمارش برای هر رنگی که می خواهید جستجو کنید.