VBA学习(16):工作表事件示例:输入数据后锁定单元格

在工作表单元格中输入数据后,该单元格就被锁定,不能再编辑。

打开VBE,在工程资源管理器中双击该工作表名称打开其代码模块,在其中输入下面的代码:

vbnet 复制代码
'假设整个工作表的Locked=False
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim rCell As Range
 Dim ans As VbMsgBoxResult
 
 For Each rCell In Target
   With rCell
     If Len(.Value) > 0 Then
       ans = MsgBox("输入正确吗?" & vbCrLf & vbCrLf & _
         vbTab & .Value & "  (" & .Address(False, False) & ")" & vbCrLf & vbCrLf & _
         "输入数值后将不能编辑这个单元格.", vbYesNo, "单元格锁定通知")
       If ans = vbYes Then
         If Me.ProtectContents Then
           Me.Unprotect Password:="123"  '首先撤销保护
           .Locked = True
           Me.Protect
           Password:="123"
         Else
           .ClearContents
           ActiveCell.Offset(-1, 0).Select  '重新选择数据输入单元格
         End If
       End If
     End With
 Next rCell
End Sub

这里,假设锁定工作表的密码为"123"。

可以使用右击单元格的方式,来重置想要重新输入数据的单元格。在该工作表代码模块中添加下面的代码:

vbnet 复制代码
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
 Dim rCell As Range
 Dim ans As VbMsgBoxResult

 For Each rCell In Target.Cells
   With rCell
     If Len(.Value) > 0 Then
       ans = MsgBox("你想要重置这个单元格吗?" & vbCrLf & vbCrLf & _
         vbTab & .Value & "  (" & .Address(False, False) & ")", vbYesNo, "单元格锁定通知")
       If ans = vbYes Then
         If ActiveSheet.ProtectContents Then ActiveSheet.Unprotect Password:="123"  '首先撤销保护
           Application.EnableEvents = False
           .ClearContents
           .Locked = False
           Application.EnableEvents = True
           ActiveSheet.Protect Password:="123"
         End If
       End If
     End With
 Next
 
 Cancel = True
End Sub

这样,右击想要重新输入数据的单元格,会弹出一个消息框,询问你是否要重置这个单元格,如果点击"是",则会清空该单元格并供输入新数据。

效果如下图1所示。

相关推荐
艾莉丝努力练剑2 小时前
【AI大模型接入SDK】LLM会话管理模块设计
网络·c++·人工智能·学习·大模型
萧行之2 小时前
可视化技术复盘:从图形语法看 D3、Vega-Lite、ECharts、Observable Plot
前端·学习·数据可视化
小弥儿10 小时前
GitHub今日热榜 | 2026-09-15:AI 智能体与本地生成工具领跑
学习·开源
susplus10 小时前
【初识ARM】ARM相关基础概念
学习·arm
XiHongShi201610 小时前
键盘大小写指示器(代替键盘灯)
学习·计算机
斯维赤12 小时前
AI Agent学习之路 | Prompt Engineering(提示词工程)的三板斧核心技巧
人工智能·学习·prompt
2301_8026510814 小时前
imx6ull裸机开发:UART
学习
辣知15 小时前
辣知·化智56 良渚神权与夏朝颠覆
学习
dadaobusi15 小时前
学习:三层交换机
学习
笨鸟先飞的橘猫15 小时前
树结构在游戏行业中的应用
学习·游戏