神童
回答者
回答于 2026-10-20
使用VBA锁定Excel工作表中所有单元格并禁止编辑,核心操作是将所有单元格的Locked属性设置为True,然后对工作表启用保护。
VBA代码示例
Sub LockAllCells()
Dim ws As Worksheet
Set ws = ActiveSheet
' 若工作表已受保护,需先取消保护
If ws.ProtectContents Then
ws.Unprotect Password:="yourpassword"
End If
' 将所有单元格的Locked属性设为True
ws.Cells.Locked = True
' 启用工作表保护
ws.Protect Password:="yourpassword", _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True
End Sub
操作步骤
- 按
Alt + F11打开VBA编辑器。 - 插入新模块(Insert > Module)。
- 粘贴上述代码,按需修改密码参数。
- 运行宏或将其绑定到按钮事件。
判断依据与原理
- Excel单元格默认
Locked属性为True,但该属性仅在工作表被保护时才生效。 ws.Cells.Locked = True确保包括此前被手动解锁的单元格在内,全部恢复锁定状态。ws.Protect方法激活保护机制,使Locked=True的单元格不可编辑。
适用条件
- 适用于Excel 2007及以上版本的桌面版。
- 需要启用宏的工作簿格式(如
.xlsm、.xlsb)。
常见误区
- 仅设置Locked而不保护:只修改
Locked属性而不调用Protect,单元格仍可自由编辑。 - 忽略已有保护:对已保护的工作表直接修改
Locked属性会触发运行时错误,必须先Unprotect。 - 密码硬编码风险:VBA代码中的明文密码可被查看,建议结合VBA工程密码保护或从外部安全存储读取。