ویلاس می داند که می تواند از یک کاربرگ محافظت کند تا کاربران نتوانند سلول ها را حذف کنند. با این حال، او نیاز به جلوگیری از حذف سلول ها بدون استفاده از محافظ کاربرگ دارد. (ویلاس در مورد پاک کردن محتویات سلول صحبت نمی کند، بلکه حذف واقعی سلول ها است به طوری که سلول های اطراف باید به سمت چپ حرکت کنند یا به سمت بالا حرکت کنند).
هیچ راه مستقیمی برای انجام این کار در اکسل وجود ندارد. خوب است اگر اکسل راهی برای ایجاد یک کنترل کننده رویداد ارائه دهد که هر زمان که یک سلول حذف می شود فراخوانی شود، اما این کار را نمی کند. (رویداد Worksheet_Change ظاهراً هر زمان که محتویات یک سلول تغییر میکند فعال میشود، اما نه زمانی که یک سلول به طور کامل حذف میشود.) به همین دلیل، استفاده از ماکرو برای محافظت از سلولهای شما در برابر حذف راه حلی نیست.
بهترین راه حلی که ما توانستیم پیدا کنیم، استفاده از یک ابهام در نحوه مدیریت فرمول های آرایه توسط اکسل است. به عنوان مثال، فرض کنید که شما داده هایی در محدوده A1:L37 دارید و نمی خواهید هیچ سلولی در این محدوده حذف شود. این مراحل کلی را دنبال کنید:
- محدوده سلول هایی را درست در سمت راست بلوکی که می خواهید محافظت کنید انتخاب کنید. در این حالت سلول های M1:M37 را انتخاب کنید.
- ="" را تایپ کنید و Shift+Ctrl+Enter را فشار دهید . اکنون یک فرمول آرایه کاری انجام ندهید که کل محدوده M1:M37 را می گیرد.
- محدوده سلول ها را درست در زیر بلوک سلول هایی که می خواهید محافظت کنید انتخاب کنید. در این حالت سلول های A38:L38 را انتخاب کنید.
- ="" را تایپ کنید و Shift+Ctrl+Enter را فشار دهید . اکنون یک فرمول آرایه هیچ کاری نکنید که کل محدوده A38:L38 را می گیرد ایجاد کرده اید.
در این مرحله شما نمی توانید هیچ سلولی را در بلوک داده حذف کنید (A1:L37) و همچنین نمی توانید هر ردیف 1 تا 37 یا هر ستون A تا L را حذف کنید. یک آرایه." تنها راه برای حذف سلولها، ردیفها یا ستونها در بلوک داده، خلاص شدن از شر فرمولهای آرایهای است که تحت تأثیر قرار میگیرند. به عبارت دیگر، ابتدا باید ستون M یا ردیف 38 را حذف کنید.