متیو خاطرنشان می کند که کاربر می تواند به راحتی روی برگه کاربرگ راست کلیک کرده و در نتیجه یک کاربرگ را به کارنامه دیگری منتقل یا کپی کند. او به دنبال راهی برای جلوگیری از این رفتار است. او به راهی نیاز دارد تا کاربر را از کپی کردن یک کاربرگ یا انتقال آن باز دارد.
این سخت تر از آن است که در ابتدا فکر کنیم. رویکرد استاندارد محافظت از ورک بوک است. (از ابزار Protect Workbook در تب Review روبان استفاده کنید.) به شرط اینکه از ساختار محافظت کنید، اکسل گزینه Move یا Copy Sheet را غیرفعال می کند.
شاید، به دلایلی، شما نمی خواهید از ورک بوک محافظت کنید. در این صورت می توانید راه حل های کلان ایجاد کنید که ممکن است کار شما را انجام دهد. به عنوان مثال، اجازه دهید بگوییم که شما یک ماکرو در ماژول کد برای خود کاربرگ دارید. شما می توانید آن ماکرو را به عنوان بخشی از عملکردش، برای بررسی وجود برخی داده های دیگر در ورک بوک یا برخی از متغیرهای سیستم بخواهید. (داده ها باید خارج از کاربرگ باشند، اما همچنان در ورک بوک هستند.) اگر وجود شناسایی شود، همه چیز همانطور که می خواهید عمل می کند.
با این حال، اگر کاربر کاربرگ را کپی یا به ورک بوک دیگری منتقل کند، بدیهی است که داده ها یا متغیرهای دیگر در آنجا وجود نخواهد داشت. اگر ماکرو شما (که با کاربرگ منتقل شده است) داده های مورد نیاز را تشخیص نمی دهد، ماکرو می تواند هر اقدامی را که فکر می کنید مناسب است، از جمله حذف کاربرگ، انجام دهد.
یک رویکرد مبتنی بر کلان متفاوت، استفاده از دو رویداد برای کاربرگ است، به این ترتیب:
Private Sub Worksheet_Activate()
ThisWorkbook.Protect "Hello"
End Sub
Private Sub Worksheet_Deactivate()
ThisWorkbook.Unprotect "Hello"
End Sub
این دو کنترل کننده رویداد به سادگی از ورک بوک هر زمان که کاربرگ انتخاب می شود محافظت می کنند و برعکس، هنگامی که کاربرگ دیگری انتخاب می شود، از آن محافظت می کنند. چرا این کار را انجام دهید؟ به دلیلی که قبلا ذکر شد، محافظت از ورک بوک می تواند قابلیت جابجایی یا کپی کاربرگ ها را غیرفعال کند. از آنجایی که کاربر همیشه باید کاربرگ را قبل از کپی یا جابجایی انتخاب کند، اعمال غیرفعال می شوند زیرا کنترل کننده های رویداد وارد بازی می شوند.
با این حال، به یاد داشته باشید که اگر هدف شما این است که کاربر را از کپی کردن داده ها و/یا فرمول های روی کاربرگ متوقف کنید، باید فراتر از کپی کردن یا جابجایی کاربرگ فکر کنید. کاربر همیشه می تواند محتویات سلول را از کاربرگ به کاربرگ دیگری کپی کند، که ممکن است کاری را که می خواهید انجام دهید بریک دهد.