如何设置工作表指定单元格范围输入后其余单元格自动恢复默认值
实现Excel「Single」工作表指定范围单选"yes"功能
功能说明
- 生效范围为
Single工作表的C10:C20单元格区域 - 该区域默认状态所有单元格为空白,仅允许同时存在最多1个值为
yes的单元格 - 每次在区域内任意单元格输入
yes后,其余单元格自动重置为空白值,匹配需求示例:首次在C10输入yes时其余单元格保持空白,后续在C20输入yes时C10自动清空、其余单元格仍为空白
实现方法
通过Excel VBA的工作表变更事件即可实现该效果,操作步骤如下:
- 打开目标Excel文件,按下
Alt + F11快捷键调出VBA编辑器 - 在左侧项目资源管理器窗口找到名为
Single的工作表,双击打开对应代码编辑页 - 将下方代码完整粘贴到编辑页中即可
Private Sub Worksheet_Change(ByVal Target As Range) Dim validRange As Range Dim cell As Range ' 定义生效的单元格范围 Set validRange = Me.Range("C10:C20") ' 仅当修改的单元格在生效范围内、且仅修改1个单元格时触发逻辑 If Not Intersect(Target, validRange) Is Nothing And Target.Count = 1 Then ' 临时关闭事件触发,避免修改单元格时循环触发本事件 Application.EnableEvents = False ' 匹配大小写不敏感的yes输入 If UCase(Trim(Target.Value)) = "YES" Then ' 清空范围内除当前输入单元格外的所有单元格 For Each cell In validRange If cell.Address <> Target.Address Then cell.Value = "" End If Next End If ' 恢复事件触发,不影响其他Excel功能 Application.EnableEvents = True End If End Sub
注意事项
- 保存文件时需要选择「Excel 启用宏的工作簿(*.xlsm)」格式,否则VBA代码无法生效
- 代码支持大小写不敏感匹配,输入
YES/Yes/yes均会触发规则 - 若需要调整生效范围,仅需要修改代码中
Me.Range("C10:C20")内的单元格区域参数即可
内容的提问来源于stack exchange,提问作者yoenoess
相关产品推荐
相关产品推荐

