Excel VBA 如何实现指定单元格区域不可被用户选中
Excel指定单元格不可选中的实现方案
要实现F5单元格不可被选中、按操作逻辑自动跳转的需求,通过Excel自带的VBA事件功能即可实现,操作步骤如下:
操作步骤
- 打开目标Excel文件,按下
Alt + F11调出VBA编辑器,在左侧「工程资源管理器」面板中找到你要设置的工作表,双击打开该工作表的代码编辑窗口。 - 在代码编辑窗口的最顶部,先声明模块级全局变量:
Public OldAddress As String - 再在下方粘贴选择变化事件的处理代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' 定义要禁止选中的单元格,按需修改为你要锁定的区域即可 Dim LockCell As Range Set LockCell = Me.Range("F5") ' 仅当选中区域包含锁定单元格时触发跳转逻辑 If Not Intersect(Target, LockCell) Is Nothing Then Application.EnableEvents = False ' 根据上一次选中的位置判断跳转方向 Select Case OldAddress ' 从F4按回车跳转过来,自动跳到F6 Case Me.Range("F4").Address Me.Range("F6").Select ' 从G5按左键跳转过来,自动跳到E5 Case Me.Range("G5").Address Me.Range("E5").Select ' 从E5按右键跳转过来,自动跳到G5 Case Me.Range("E5").Address Me.Range("G5").Select ' 从F6按上键跳转过来,自动跳到F4 Case Me.Range("F6").Address Me.Range("F4").Select ' 其他未知来源跳转,默认落到F4,可按需修改 Case Else Me.Range("F4").Select End Select Application.EnableEvents = True End If ' 记录当前选中的单元格地址,供下一次跳转判断方向使用 OldAddress = Target.Address End Sub - 按下
Ctrl + S保存文件,保存类型选择「Excel 启用宏的工作簿(*.xlsm)」,关闭VBA编辑器返回Excel界面即可生效。
效果验证
- 在F4单元格录入内容后按回车键,下一个选中单元格为F6,不会停留在F5
- 从G5单元格按左方向键移动,会直接跳转到E5,不会选中F5
- 从E5按右方向键、F6按上方向键也会自动跳过F5,符合需求。
扩展说明
如果需要锁定多个单元格/区域,只需修改Set LockCell = Me.Range("F5")这行代码即可,比如要锁定F5到H5的整行区域,修改为Set LockCell = Me.Range("F5:H5"),再对应调整跳转逻辑即可。
内容的提问来源于stack exchange,提问作者Dolphin975
相关产品推荐
相关产品推荐

