ناتان اغلب با مشکلی مواجه میشود که افراد عناوین شغلی خود را با حروف بزرگ مینویسند (مثلاً «مدیر مالی باید ارائه دهد...») در اسناد. او مایل است که یک کلان برای هر استفاده از عنوان مدیریتی بررسی کند و آن را با حروف کوچک بنویسد، مگر اینکه دلیل موجهی وجود داشته باشد که وقتی عنوان شروع یک جمله میشود، اولین کلمه را با حروف اولیه درآورد. او نمیداند که آیا میتوان بدون وارد کردن تمام سی عنوان مدیریتی، یک کارت وحشی برای مطابقت با هر عبارت دو کلمهای که کلمه دوم «مدیر» یا «مدیران» باشد، تنظیم کرد.
این امکان وجود دارد که برای یافتن انواع نمونه هایی که به دنبال آن هستید، جستجوی کارت وحشی انجام دهید. تنها کاری که باید انجام دهید این است که یک جستجوی پیشرفته انجام دهید، مطمئن شوید که تیک Use Wildcards انتخاب شده است و سپس از این الگو در قسمت Find What استفاده کنید:
<[A-Za-z][a-z]{1,}>^32[Mm]anager*>
الگو دو کلمه پیدا می کند که کلمه دوم مدیر یا مدیران است. اگر هر دو یا هر یک از کلمات با حروف بزرگ یا هر دو کلمه کوچک باشند، کلمات را پیدا می کند.
مشکل این است که نمی توان کلمه ای را که با استفاده از حروف عام پیدا شده است به تمام حروف کوچک تغییر داد. این بدان معنی است که شما باید به صورت دستی مواردی را که پیدا شده است بررسی کنید و سپس تغییرات لازم را با دست انجام دهید. اگر فقط باید هر چند وقت یکبار این کار را انجام دهید، این کار خیلی سخت نیست زیرا کادر گفتگوی Find and Replace مودال نیست. . (این بدان معناست که میتوانید هنگام ویرایش سند، کادر محاورهای را روی صفحه نمایش خود باز بگذارید، سپس روی Find Next در کادر محاورهای کلیک کنید تا اتفاق منطبق بعدی را پیدا کنید.)
اگر نیاز به انجام چنین تغییراتی اغلب دارید، تنها راه حل این است که یک ماکرو ایجاد کنید که تغییرات را برای شما انجام دهد. کلان زیر همان الگوی ذکر شده در بالا را جستجو می کند و سپس حروف بزرگ عناوین شغلی را به درستی تغییر می دهد. کلان عناوین شغلی متشکل از دو کلمه را پیدا می کند که کلمه دوم "مدیر"، "مدیر"، "مدیران" یا "مدیران" است. سپس هر حروف بزرگ را از کلمات حذف می کند مگر اینکه عنوان جمله ای را شروع کند که در این صورت فقط حروف بزرگ را از کلمه دوم حذف می کند.
Sub FixManagerCapitalisation()
Dim aRange As Range
Dim bRange As Range
With Selection.Find
.ClearFormatting
.Text = "<[A-Za-z][a-z]{1,}>^32[Mm]anager*>"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.MatchCase = False
.MatchWildcards = True
Do While .Execute
Set aRange = Selection.Range
Set bRange = Selection.Range
bRange.MoveEnd unit:=wdSentence
If bRange.Text <> Selection.Sentences(1).Text Then
aRange = LCase(aRange.Words(1).Text) & Trim(aRange.Words(2))
End If
aRange = aRange.Words(1) & Trim(LCase(aRange.Words(2).Text))
aRange.Start = aRange.End
aRange.Select
.ClearFormatting
Loop
End With
End Sub