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

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

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

از کاربرگ محافظت کنید

یک رویکرد ساده (و موثر) این است که کاربرگ خود را طوری طراحی کنید که بتوان از آن محافظت کرد. البته، شما باید مطمئن شوید که سلول هایی که کاربر باید در آن اطلاعات وارد کند محافظت نشده باشد، اما در غیر این صورت ماکرو شما می تواند مطمئن شود که وقتی کاربرگ فعال می شود، محافظت می شود. این امکان حذف دستی هر سلول از کاربرگ را از بین می برد.

این بدان معناست که اگر محدوده سلول ها نیاز به حذف داشته باشد، کاربر مجبور می شود (توسط حفاظت) ماکرو شما را برای حذف انتخاب کند. سپس ماکرو می تواند کاربرگ را از حالت محافظت خارج کند، محدوده سلول ها را حذف کند و دوباره از آن محافظت کند.

رهگیری حذف می کند

یکی دیگر از رویکردهای مبتنی بر کلان، کار با رویداد BeforeDelete برای کنترل آنچه در واقع اتفاق می افتد است. موارد زیر یک کنترل کننده رویداد ساده است که می تواند مبنایی باشد که شما واقعاً از آن استفاده می کنید:

Private Sub Worksheet_BeforeDelete()
    Dim delRng As Range
    Dim selRng As Range

    On Error Resume Next
    Set delRng = Range("C2:D5")   Change the range to the block
                                  of cells to be deleted (manually
                                  or by macro)
    Set selRng = Application.Selection   Cells selected manually
                                         by the user
    If MyRng.Address = delRng.Address Then
        Selection.Delete shift:=xlUp
    End If
End Sub

کنترل کننده رویداد به سادگی محدوده ای را که می خواهید فقط به سمت بالا حذف کنید با محدوده ای که کاربر برای حذف انتخاب کرده است مقایسه می کند. اگر محدوده ها یکسان باشند، کنترل کننده محدوده را حذف کرده و به بالا منتقل می کند. بدیهی است که باید محدوده اختصاص داده شده به متغیر delRng را تغییر دهید تا با محدوده ای که می خواهید نظارت کنید مطابقت داشته باشد.

نقشه برداری مجدد کلید حذف

در مورد حذف، همچنین می توانید کلید Delete را مجدداً نقشه برداری کنید تا هر کاری که می خواهید انجام دهد. تنها کاری که باید انجام دهید این است که یک ماکرو مانند زیر را در ماژول کد ThisWorkbook قرار دهید:

Private Sub Workbook_Open()
    Application.OnKey "{DELETE}", "MyMacro()"
End Sub

این بدان معنی است که وقتی ورک بوک باز می شود، کلید Delete مجدداً نقشه برداری می شود تا هر زمان که آن را فشار دهید، MyMacro (این را به هر ماکرو که می خواهید تغییر دهید) به طور خودکار اجرا می شود.

توجه داشته باشید که این روش تنها بر فشار دادن کلید Delete تأثیر می گذارد. بر حذف های انجام شده به روش دیگری تأثیر نمی گذارد. برای آن ها، ماکروهای شما هنوز باید منطق را پیش بینی کرده و مدیریت کنند.

رویکرد کامل

که ما را به رویکرد کامل می رساند. این رویکرد به سادگی به معنای تهیه فهرستی از تمام راه های مختلفی است که کاربر می تواند حذف را آغاز کند و سپس آن راه ها را رهگیری کند. فهرست (و رهگیری ها) لزوماً باید شامل برخی از رویکردهایی باشد که قبلاً بحث شده است، مانند مدیریت کلید Delete. همچنین باید نحوه غیرفعال کردن یا تغییر مواردی را که کاربر راست کلیک می کند یا زمانی که کاربر گزینه حذف را از نوار انتخاب می کند، غیرفعال یا تغییر دهید. (حتی ممکن است بخواهید گزینه های مربوط به حذف را از رابط کاربری حذف کنید.)

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

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

پاسخ شما

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

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

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

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

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

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

140 نفر آنلاین
0 عضو و 140 مهمان در سایت حاضرند
بازدید امروز: 24771
بازدید دیروز: 27244
بازدید کل: 15226830
...