مارسلا سندی دارد که در آن موارد بسیاری از عباراتی مانند "قرن بیست و یکم" وجود دارد که تنها چیزی که تغییر می کند اعداد رومی است. او مایل است تمام نمونههای اعداد رومی پس از کلمه "قرن" به حروف کوچک تبدیل شود. (این کار برای اینکه کلاه های کوچک درست به نظر برسند ضروری است.) مارسلا از خود می پرسد که آیا راهی برای انجام این کار با استفاده از Find and Replace وجود دارد.
وقتی متن را با حروف کوچک قالب بندی می کنید، هر چیزی که حرف بزرگ باشد شبیه نسخه بدون قالب متن است. با این حال، هر چیزی که با حروف کوچک باشد، شبیه یک نسخه "کوچک" از یک حرف بزرگ است. بنابراین، نام کلاهک های کوچک. (شکل 1 را ببینید.)
شکل 1. متنی که اثر حروف کوچک بر روی حروف بزرگ و کوچک را نشان می دهد (XXI).
این تفاوت در نحوه نمایش حروف بزرگ و کوچک با حروف کوچک به همین دلیل است که مارسلا نشان داد که او باید هم اعداد رومی را به حروف کوچک تبدیل کند و هم آنها را به صورت حروف کوچک فرمت کند.
متأسفانه، هیچ قابلیتی در Find and Replace برای تغییر بزرگی حروف وجود ندارد. شما به راحتی می توانید از جستجوی عام برای اعمال ویژگی Small Caps به اعداد رومی استفاده کنید، اما نه برای تغییر آنها به حروف کوچک. برای انجام این کار، باید از یک ماکرو استفاده کنید:
Sub ConvertRomans() Dim aRange As Range Set aRange = ActiveDocument.Range With aRange.Find .ClearFormatting .MatchWildcards = True .Text = "century [MDCLXVI]{1,}>" Do While .Execute With aRange .MoveStart Unit:=wdWord, Count:=1 .Text = LCase(aRange.Text) .Font.SmallCaps = True .Collapse direction:=wdCollapseEnd End With Loop End With End Sub
این ماکرو از یک جستجوی عام برای یافتن هر نمونه ای از "قرن" و به دنبال آن اعداد رومی استفاده می کند. اگر نمونه ای پیدا شود، کلمه "قرن" از محدوده ای که پیدا شد حذف می شود، به این معنی که فقط اعداد رومی باقی مانده است. سپس آنها به حروف کوچک تبدیل می شوند و ویژگی Small Caps اعمال می شود. جستوجو ادامه مییابد، تا جایی که چیزی بیشتر پیدا نمیشود. (ماکرو حتی در اسناد بزرگ بسیار سریع اجرا می شود.)