托德开发了一个供他人使用的工作簿。为了防止数据被破坏,他保护了工作表和工作簿。问题是,Todd有时在进行更改后会忘记保护工作表和工作簿。他想知道是否存在创建可视指示器的方法,该指示器可以显示工作表/工作簿当前是受保护的还是不受保护的。

当然,查看是否受到保护的最简单方法是开始查看各种功能区选项卡上的工具。如果存在所有工具,则工作表和工作簿将不受保护。如果有大量工具不可用(“灰显”),则保护功能已打开。

另一个简单的解决方案是创建一个用户定义的函数,该函数返回一个指示工作簿或工作表是否受保护的值。以下将达到目的:

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)

公式的结果为“受保护”或“不受保护”,

取决于工作表和工作簿的状态。您可以使用条件格式来根据函数返回的内容突出显示单元格。

切记:仅当重新计算工作表时,函数的值才会更新。如果您所做的只是保护(或取消保护)工作表,则不会导致重新计算工作表。因此,要在更改保护状态后查看正确的结果,您需要确保重新计算工作表。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(9639)适用于Office 365中的Microsoft Excel 2007、2010、2013、2016、2019和Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: