如何在 Excel 中输入数据后自动锁定或保护单元格?

作者:互联网

2026-04-13

Excel

假设您有一个工作表,其中只有特定范围的空白单元格需要输入数据,并且在完成数据输入后,您希望这些单元格自动锁定,防止被再次修改。本文将为您提供解决方案。

使用 VBA 代码在输入数据后锁定或保护单元格

使用 VBA 代码在输入数据后锁定或保护单元格

例如,若需输入数据的特定空白单元格范围为 A1:F8,请按以下步骤操作,即可在 Excel 中输入数据后自动锁定这些单元格。

1. 请先解锁该区域:选中这些单元格,右键单击,在右键菜单中选择设置单元格格式,在弹出的设置单元格格式对话框中,切换至保护选项卡,取消勾选锁定复选框,然后单击确定按钮。参见截图:

“设置单元格格式”对话框的截图,显示“保护”选项卡下的“锁定”复选框

2. 单击审阅> 保护工作表,即可为此工作表设置密码。

3. 右键单击工作表标签,在右键菜单中选择查看代码,然后将下方的 VBA 代码复制并粘贴到代码窗口中。参见截图:

VBA 代码:在输入数据后锁定或保护单元格

Dim mRg As Range
Dim mStr As String

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("A1:F8"), Target) Is Nothing Then
    Set mRg = Target.Item(1)
    mStr = mRg.Value
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xRg As Range
    On Error Resume Next
    Set xRg = Intersect(Range("A1:F8"), Target)
    If xRg Is Nothing Then Exit Sub
    Target.Worksheet.Unprotect Password:="123"
    If xRg.Value <> mStr Then xRg.Locked = True
    Target.Worksheet.Protect Password:="123" 
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("A1:F8"), Target) Is Nothing Then
    Set mRg = Target.Item(1)
     mStr = mRg.Value
End If
End Sub

Excel 的 Visual Basic for Applications 编辑器中代码窗口内粘贴的 VBA 代码截图

注意:代码中的 “A1:F8” 为您需输入数据的单元格范围;“123” 为受保护工作表的密码,请根据实际需求修改。

4. 同时按下 Alt+Q 键,即可关闭 Microsoft Visual Basic for Applications 窗口。

在向 A1:F8 范围内的单元格完成数据输入后,这些单元格将自动锁定。若您尝试修改该范围内的任意单元格内容,系统会立即弹出提示对话框。参见截图:

尝试修改 Excel 中被锁定的单元格后显示错误提示的对话框截图

相关标签:

Excel技巧