تاد یک کتاب کار ساخته است که توسط دیگران استفاده می شود. برای جلوگیری از خراب شدن داده ها، او از کاربرگ و همچنین کتاب کار محافظت کرد. مشکل این است که تاد گاهی اوقات فراموش می کند که پس از ایجاد تغییرات از کاربرگ و کتاب کار محافظت کند. او به این فکر می کند که آیا راهی برای ایجاد یک نشانگر بصری وجود دارد که نشان دهد کاربرگ/کتاب کار در حال حاضر محافظت شده است یا محافظت نشده است.
البته، ساده ترین راه برای بررسی اینکه آیا چیزی محافظت نشده است این است که فقط شروع به نگاه کردن به ابزارهای روی نوارهای مختلف کنید. اگر طیف کاملی از ابزارها وجود داشته باشد، کاربرگ و کتاب کار محافظت نشده هستند. اگر تعداد قابل توجهی از ابزارها در دسترس نیستند ("خاکستری")، حفاظت روشن می شود.
راه حل آسان دیگر ایجاد یک تابع تعریف شده توسط کاربر است که مقداری را برمی گرداند که نشان می دهد کتاب کار یا کاربرگ محافظت شده است یا خیر. موارد زیر این کار را انجام خواهند داد:
Function WksProtected(rng As Range) As String
Application.Volatile
If rng.Parent.ProtectContents Then
WksProtected = "Protected"
Else
WksProtected = "Not Protected"
End If
End Function
Function WkbProtected(rng As Range) As String
Application.Volatile
If rng.Parent.Parent.ProtectStructure Then
WkbProtected = "Protected"
Else
WkbProtected = "Not Protected"
End If
End Function
برای استفاده از ماکروها، فقط فرمول هایی مانند زیر را در هر نقطه از کاربرگ قرار دهید:
=WksProtected(A1)
=WkbProtected(A1)
نتیجه فرمول ها بسته به وضعیت کاربرگ ها و کتاب کار، "محافظت شده" یا "محافظت نشده" است. می توانید از قالب بندی شرطی برای برجسته کردن سلول ها بر اساس آنچه توسط توابع برگردانده می شود استفاده کنید.
به یاد داشته باشید: مقدار توابع تنها در صورتی به روز می شود که کاربرگ مجدداً محاسبه شود. اگر تنها کاری که انجام میدهید محافظت (یا عدم محافظت) از کاربرگ است، منجر به محاسبه مجدد کاربرگ نمیشود. بنابراین برای مشاهده نتایج مناسب پس از تغییر وضعیت حفاظت، باید مطمئن شوید که کاربرگ را دوباره محاسبه کرده اید.