ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
24 visibility
موضوع: آفیس توسط:

اگنس پرسید آیا راهی برای خط کشی خودکار روی همه موارد کلمه "بخش" و هر گونه اطلاعات جانبی پس از کلمه وجود دارد یا خیر. به عنوان مثال، یک سند ممکن است حاوی متنی مانند "بخش 2.3(b)(i)" یا "بخش 5.21" یا "بخش 12.12(a)" باشد و اگنس می خواهد این متن را پیدا کند و زیر همه آن خط کشیده شود.

یکی دو چیز برای امتحان کردن وجود دارد. اول از همه، می‌توانید یک Find and Replace استاندارد انجام دهید، اما فقط در صورتی که بتوانید متن را کمی «استاندارد» کنید. بدون نوعی الگوی قابل تطبیق، عملاً امکان یافتن و جایگزینی وجود ندارد که تمام نمونه‌های ممکن از متن را پیدا کند.

با این حال، یک امکان، ضبط یک ماکرو است که به همه احتمالات نگاه می کند. لزوماً یک ماکرو ساده نیست، زیرا باید کلمه "بخش" را بلافاصله پس از آن یک فاصله، یک رقم، یک نقطه، ارقام بیشتر، و سپس (اختیاری) همه چیز تا و شامل یک پرانتز بسته را پیدا کند. این یک تحلیل متنی است که باید اتفاق بیفتد.

جایی که باید شروع کرد با جستجوی حروف عام است. عبارت جستجوی زیر کلمه بخش را به دنبال الگوی "شماره نقطه عدد" پیدا می کند:

Section [0-9]{1,}.[0-9]{1,}

اگر این الگوی جستجو در یک ماکرو استفاده شود، ماکرو می‌تواند پس از هر یافتن موفقیت‌آمیز متن، شروع به بسط دادن آنچه پیدا شده است کند و ببیند که آیا دارای نویسه‌های پرانتزی است یا خیر. ماکرو زیر این کار را انجام خواهد داد.

Sub ULWords()
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "Section [0-9]{1,}.[0-9]{1,}"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    While Selection.Find.Found
        Selection.MoveRight Unit:=wdCharacter, _
          Count:=1, Extend:=wdExtend
            While Right(Selection.Text, 1) = "("
                Selection.MoveRight Unit:=wdCharacter, _
                  Count:=1, Extend:=wdExtend
                While Right(Selection.Text, 1) <> ")"
                    Selection.MoveRight Unit:=wdCharacter, _
                      Count:=1, Extend:=wdExtend
                Wend
                Selection.MoveRight Unit:=wdCharacter, _
                  Count:=1, Extend:=wdExtend
            Wend
        Selection.MoveRight Unit:=wdCharacter, _
          Count:=-1, Extend:=wdExtend
        Selection.Font.Underline = True
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        Selection.Find.Execute
    Wend
End Sub

توجه داشته باشید که ماکرو از یک جستجوی عام در ابتدا برای یافتن همه نمونه‌های کلمه "بخش" و به دنبال آن الگوی "عدد نقطه عدد" استفاده می‌کند. اگر نمونه ای پیدا شود، آنگاه با یک کاراکتر گسترش می یابد. اگر آن کاراکتر یک پرانتز ابتدایی باشد، انتخاب تا زمانی که یک پرانتز بسته پیدا شود تمدید می شود. این فرآیند یافتن پرانتزهای باز/بستن ادامه می‌یابد، و هنگامی که مجموعه‌ای دیگر قرار نگیرد، کل انتخاب توسعه‌یافته زیر خط کشیده می‌شود. این روند تا زمانی که کل سند جستجو شود ادامه می یابد.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 26 visibility
0 دوستدار 0 امتیاز منفی
1 پاسخ 506 visibility
ارسال شده در 27 مهر 1402 موضوع: آفیس توسط: mtz2728finish

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

216 نفر آنلاین
0 عضو و 216 مهمان در سایت حاضرند
بازدید امروز: 4173
بازدید دیروز: 25180
بازدید کل: 20341526
...