摘要:Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)' 检查是否双击了指定区域If Not Intersect(Target, Range("A1")
本文将实现以下安全控制:
✅ 打开工作簿时自动锁定所有表格✅ 双击指定区域弹出密码验证窗口✅ 验证成功后方可编辑表格✅ 关闭后重新打开自动恢复锁定状态在VBA编辑器中双击 ThisWorkbook,粘贴以下代码:
Private Sub Workbook_Open' 工作簿打开时锁定所有工作表Dim ws As WorksheetFor Each ws In ThisWorkbook.Worksheetsws.Protect Password:="123456", UserInterfaceOnly:=TrueNext wsRange("A1").Select ' 可选:光标定位到提示位置End Sub说明:
Password 后的"123456"是工作表保护密码(可修改)
UserInterfaceOnly:=True 允许VBA操作被保护的工作表
双击对应的工作表(如Sheet1),粘贴以下代码:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)' 检查是否双击了指定区域If Not Intersect(Target, Range("A1")) Is Nothing ThenCancel = True ' 阻止默认编辑行为' 显示验证窗口If UserForm1.Show = True Then' 验证成功时解锁所有工作表Dim ws As WorksheetFor Each ws In ThisWorkbook.Worksheetsws.Unprotect Password:="123456"Next wsMsgBox "验证成功!表格已解锁", vbInformationElseMsgBox "验证失败!", vbCriticalEnd IfEnd IfEnd Sub窗体代码:
' 确定按钮事件Private Sub btnOK_ClickIf txtPassword.Value = "admin" Then ' 验证密码Me.HideUserForm1.Tag = "Success"ElseMsgBox "密码错误!", vbExclamationtxtPassword.SetFocusEnd IfEnd Sub' 取消按钮事件Private Sub btnCancel_ClickUnload MeEnd Sub' 返回验证结果Public Function Show As BooleanMe.ShowShow = (UserForm1.Tag = "Success")End Function密码设置:
工作表保护密码:123456(第二步中设置)
解锁验证密码:admin(第五步代码中设置)
' 修改工作簿打开事件中的密码 ws.Protect Password:="你的新密码" ' 修改工作表事件中的密码 ws.Unprotect Password:="你的新密码"
隐藏VBA代码:VBA编辑器 → 工具 → VBAProject属性 → 保护勾选"查看时锁定工程",设置查看密码指定区域保护:' 在解锁后启用特定区域编辑 ws.Protect Password:="123456", AllowEditRanges:="可编辑区域"
通过本教程,你已创建了一个具备企业级安全控制的Excel工作簿,有效防止未经授权的修改,同时保证授权用户的高效操作。
来源:凡妈小厨房