Excel 保护工作表以供手动输入,但允许通过userform输入、编辑和删除
我已经使用VBA在excel中创建了一个数据输入表单,我想保护te数据库工作表以进行手动输入,但允许通过VBA用户表单保存数据、编辑数据和删除数据或行。 我已经将下面写的代码进行了编码,以保护该表Excel 保护工作表以供手动输入,但允许通过userform输入、编辑和删除,excel,vba,password-protection,Excel,Vba,Password Protection,我已经使用VBA在excel中创建了一个数据输入表单,我想保护te数据库工作表以进行手动输入,但允许通过VBA用户表单保存数据、编辑数据和删除数据或行。 我已经将下面写的代码进行了编码,以保护该表 Sub Workbook_Open() Worksheets("Database").Protect Password:=True, UserinterfaceOnly:=True End Sub 它工作正常,但一段时间后,它给我运行时错误1004。 除此之外,它不允许我使用删除
Sub Workbook_Open()
Worksheets("Database").Protect Password:=True, UserinterfaceOnly:=True
End Sub
它工作正常,但一段时间后,它给我运行时错误1004。
除此之外,它不允许我使用删除按钮删除以前的数据。当您使用VBA用户表单编辑工作表时,工作表需要暂时取消保护。您可以这样做:
' Unprotect
Sheets("SHEET").Unprotect password:="PASSWORD"
'
'your code here
'
' Protect
Sheets("SHEET").protect password:="PASSWORD"
删除受保护工作表上的行
- 如果准备解锁整行,则可以使用以下代码准备工作表
- 在
事件代码中不使用它;这只是一些准备工作表的代码工作簿_Open
- 注意
AllowDeletingRows:=True
- 但是,如果未解锁所有单元格,则无法删除行
- 行(与列类似)的问题是,如果删除一行,则下一行“落在已删除行的位置”。例如,如果在使用示例代码后,用户删除了任何允许的行,那么他将无法删除第50行,这可能正是您所需要的行为
Option Explicit
' Remove this Sub when done.
Sub Allowed()
Const AllowedRows As String = "2:50"
Const pWord As String = "123"
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Database")
With ws
.Unprotect pWord
.Cells.Locked = True ' Lock all cells.
.EnableSelection = xlNoRestrictions
.Rows(AllowedRows).Locked = False ' Unlock allowd rows.
.Protect Password:=pWord, DrawingObjects:=True, Contents:=True, _
Scenarios:=True, AllowDeletingRows:=True
End With
End Sub