如何解决保护工作表以进行手动输入,但允许通过用户表单输入,编辑和删除
我已使用VBA在excel中创建了数据输入表单,我想保护数据库表具有手动输入功能,但允许通过vba用户表单保存数据,编辑数据以及删除数据或行。 我已将以下代码编码为保护工作表。
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"
,
删除受保护的工作表上的行
- 如果您准备解锁整个行,则可以使用以下代码来准备工作表。
- 不不能用于
Workbook_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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。