要保护Excel工作表,但允许使用表单进行数据输入,可以使用以下代码示例:
Private Sub Workbook_Open()
' 在工作簿打开时运行的代码
' 取消工作表保护
Sheet1.Unprotect Password:="password"
' 启用工作表保护
Sheet1.Protect Password:="password", UserInterfaceOnly:=True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' 在工作表选择改变时运行的代码
' 取消工作表保护
Me.Unprotect Password:="password"
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
' 在工作表内容改变时运行的代码
' 启用工作表保护
Me.Protect Password:="password", UserInterfaceOnly:=True
End Sub
在这个示例中,我们假设要保护名为"Sheet1"的工作表,并使用密码"password"进行保护。首先,在工作簿打开时,会运行Workbook_Open()事件处理程序。在这个事件处理程序中,我们取消了工作表的保护,以便可以在打开工作簿后编辑工作表。
然后,我们使用两个工作表事件处理程序来处理工作表选择和内容改变。在Worksheet_SelectionChange()事件处理程序中,我们取消了工作表的保护,以便允许用户选择单元格并输入数据。在Worksheet_Change()事件处理程序中,我们又启用了工作表的保护,以便保护工作表不被其他方式修改。
这样,用户就可以通过表单输入数据,而工作表仍然受到保护。