Barry可以锁定工作表,以便只有密码输入者才能对其进行编辑。如果此人输入密码,进行编辑,然后保存包含工作表的工作簿,则该工作表将不受保护。 Barry想知道是否存在一种方法,当保存工作表时,Excel可以提醒用户使用最初使用的相同密码再次保护工作表。

有几种方法可以解决此问题。如果已为工作表分配了密码,则只需确保在保存工作簿时使用相同的密码来重新保护工作表。通过使用可以与BeforeSave事件关联的宏,可以轻松完成此操作。该宏应添加到ThisWorkbook对象中:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Sheets("ABC").Protect ("XYZ")

End Sub

本示例假定您要保护的工作表名为ABC,并且用于保护工作表的密码为XYZ。您将需要更改这些值以反映您的实际工作表和密码。

请注意,只要保存工作簿,此宏就会自动重新保护工作表。因此,如果用户与工作表之间的工作时间很长,并且在该会话中多次保存了工作簿,则他们将需要经常取消保护工作表。如果愿意,可以创建一个宏,询问是否应重新保护工作表:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

If MsgBox("Reprotect Sheet ABC?", vbYesNoCancel) = vbYes Then         Sheets("ABC").Protect ("XYZ")

End If End Sub

当然,这种方法意味着,如果用户选择不重新保护工作表,则可能不会再次保护该工作表。

另一种方法根本不涉及使用宏,而是使用另一种方式进行保护。在传统的工作表保护中,您将单个单元格的格式设置为未锁定,然后对工作表应用了保护,以使任何锁定的单元格都无法更改。

如果您没有将任何单元标记为未锁定(这似乎是Barry所做的),那么没有密码就无法更改工作表中的任何内容。

从Excel 2002开始,您实际上可以保护工作表中单元格的各个范围。请按照下列步骤操作:

。从工具菜单中选择保护,然后选择允许用户编辑范围。 Excel将显示“允许用户编辑范围”对话框。

(请参见图1。)

。单击新建按钮。 Excel将显示“新建范围”对话框。 (请参见图2。)

。在标题框中,输入要用于此范围的名称。

。在“引用单元格”框中,输入您希望用户能够编辑的范围。 (如果有多个范围要使用同一密码,则可以用逗号分隔这些范围。)

。在“范围密码”框中,输入要提供给用户的密码。

。单击确定。再次要求您输入密码。

。再次输入您在步骤5中使用的密码。现在,该范围显示在“允许用户编辑范围”对话框中。

。单击“确定”关闭“允许用户编辑范围”对话框。

。照常保护您的工作表。

保护工作表(步骤9)时,您只需要记住一件事。由于您尚未解锁任何单元格,因此工作表中的所有单元格都将受到保护。您需要确保应用的保护允许选择锁定的单元格。如果在工作表受到保护之后,用户尝试编辑在步骤4中指定的范围内的单元格,则要求他们输入在步骤5中指定的密码。提供密码后,他们可以对任何单元格进行编辑范围中。

这种方法的妙处在于不删除工作表保护,因为用户从未删除过该保护,因此工作表仍受到保护。因此,用户永远不需要知道整个工作表的密码。当用户关闭并重新打开工作簿时,该工作表仍会受到保护,正如您所需要的那样。另外,您没有不可避免的宏缺点-用户在打开工作簿时可以将其禁用。

注意:

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

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

本技巧(11972)适用于Microsoft Excel 97、2000、2002和2003。您可以在以下位置找到用于Excel功能区界面(Excel 2007及更高版本)的本技巧的版本:

链接:/ excelribbon-Forcing_a_Worksheet_to_be_Protected_Again [强制再次保护工作表]。