如何根据Excel单元格G4的值锁定第9行指定单元格并赋值?
解决Excel下拉选择控制单元格锁定与值的问题
实现步骤
初始化单元格锁定状态
- 全选工作表(按
Ctrl+A),右键选择「设置单元格格式」→切换到「保护」选项卡,取消勾选「锁定」,点击确定。这样默认所有单元格都处于可编辑状态,后续仅锁定需要限制的单元格。
- 全选工作表(按
添加VBA事件代码
- 右键目标工作表标签(如Sheet1),选择「查看代码」,粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range) ' 仅响应G4单元格的内容变化 If Not Intersect(Target, Me.Range("G4")) Is Nothing Then ' 取消工作表保护,若有密码,将""替换为你的密码,例:"123456" Me.Unprotect Password:="" Select Case Me.Range("G4").Value Case 1 ' 仅允许编辑G9,H9/I9/J9锁定并设为0 Me.Range("G9").Locked = False With Me.Range("H9:J9") .Locked = True .Value = 0 End With Case 2 ' 允许编辑G9/H9,锁定I9/J9 Me.Range("G9:H9").Locked = False Me.Range("I9:J9").Locked = True Case 4 ' 允许编辑G9到J9所有单元格 Me.Range("G9:J9").Locked = False Case Else ' 未选择指定值时,仅允许编辑G9 Me.Range("G9").Locked = False Me.Range("H9:J9").Locked = True End Select ' 重新保护工作表,UserInterfaceOnly参数让VBA可直接修改锁定状态 Me.Protect Password:="", UserInterfaceOnly:=True End If End Sub
- 关键注意事项
- 若G4的下拉选项是文本类型(而非数字),需将代码中
Case 1/Case 2/Case 4改为Case "1"/Case "2"/Case "4" - 保存文件时需选择
.xlsm格式(启用宏的工作簿),否则代码无法生效 - 若工作表设置了保护密码,需同步修改代码中两处
Password:=""的内容
- 若G4的下拉选项是文本类型(而非数字),需将代码中
内容的提问来源于stack exchange,提问作者Sibbie88
相关产品推荐
相关产品推荐

