ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
20 visibility
موضوع: آفیس توسط:
است
دنیز در حال توسعه یک ماکرو است و باید آزمایش کند تا ببیند آیا نقطه درج در یک نشانک قرار دارد یا خیر. او باید این را بداند زیرا اگر نقطه درج در یک نشانک باشد، باید کد را اصلاح کند. اگر در یک نشانک نیست، کد او باید یکی را ایجاد کند.
در تئوری، این فرآیند بسیار ساده است. تنها کاری که باید انجام دهید این است که بررسی کنید ببینید چند نشانک در انتخاب وجود دارد، به این ترتیب:
If Selection.Bookmarks.Count > 0 ThenInside a bookmark End If
این کار چه انتخاب یک محدوده از متن باشد و چه انتخاب فقط در نقطه درج جمع شود. با این حال، چند "گوچا" بالقوه وجود دارد که باید از آنها آگاه بود. اولین مورد این است که اگر نقطه درج بلافاصله در سمت چپ یک نشانک باشد (فقط با لمس شروع نشانک)، خاصیت Count همچنان بزرگتر از 0 خواهد بود. این به این دلیل است که انتخابی که با نقطه درج جمع شده تعریف می شود، در نظر گرفته می شود که شامل کاراکتر درست در سمت راست نقطه درج می شود.
دومین چیزی که باید از آن آگاه باشید این است که اگر انتخاب شما جمع شود، نمی توانید به 0 یا 1 بودن خاصیت شمارش تکیه کنید. در واقع، ممکن است بیش از 1 باشد زیرا ممکن است نشانک ها "همپوشانی" داشته باشند و بنابراین، برای اینکه نقطه درج به طور همزمان در بیش از یک نشانک باشد. بنابراین، ممکن است برای آزمایش اینکه نقطه درج در کدام نشانک ها قرار دارد، به کد خود نیاز داشته باشید. ساده ترین راه برای انجام این کار این است که ویژگی Name بوکمارک ها را به این ترتیب بررسی کنید:
Dim bFoundIt As Boolean Dim J As Integer bFoundIt = False Selection.Collapse If Selection.Bookmarks.Count > 0 ThenInside a bookmark For J = 1 To Selection.Bookmarks.Count If Selection.Bookmarks(J).Name = "DesiredName" Then bFoundIt = True End If Next J End If
هنگامی که این کد اجرا می شود، bFoundIt فقط در صورتی True خواهد بود که نقطه درج در داخل نشانک مورد نظر باشد. همچنین به گنجاندن دستوری برای جمع کردن انتخاب توجه کنید تا مطمئن شوید که واقعاً در یک نقطه درج است و نه محدوده ای از متن انتخاب شده.
سومین "گوچا" بالقوه این است که Word در واقع از بوکمارک ها در داخل برای اهداف بسیاری استفاده می کند. به عنوان مثال، از آنها برای تعریف محدوده چاپ استفاده می کند، اما این تنها مکان نیست. با این حال، نشانک های تعریف شده توسط سیستم را می توان شناسایی کرد، زیرا آنها همیشه با یک خط زیر شروع می شوند. در حالی که این مشکلی در کد بالا نیست (از آنجایی که شما به طور خاص به دنبال یک نشانک با نام خاصی هستید)، اگر کد شما به دنبال هر نشانکی باشد، یک مشکل بالقوه خواهد بود. کد زیر که به عنوان یک تابع قابل فراخوانی نوشته شده است، ممکن است در چنین شرایطی مفید باشد.
Function InBookmark() As BooleanReturns True if the insertion point is insideany non-system bookmark. Also collapses theselection to an insertion point Dim bFoundIt As Boolean Dim J As Integer bFoundIt = False Selection.Collapse For J = 1 To Selection.Bookmarks.Count If Left(Selection.Bookmarks(J).Name) <> "_" Then bFoundIt = True End If Next J InBookmark = bFoundIt End Function
برای استفاده از این تابع از داخل ماکرو خود، می توانید از چیزی به این سادگی استفاده کنید:
If Not InBookmark Thencreate new bookmark End If
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

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

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

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

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

614 دیدگاه

11.1k کاربر

100 نفر آنلاین
0 عضو و 100 مهمان در سایت حاضرند
بازدید امروز: 1765
بازدید دیروز: 11313
بازدید کل: 20232122
...