如何实现点击单元格时切换其填充颜色的功能
可行实现方案
以下方案均满足单元格永久保留数值1、点击切换蓝/白填充色的需求,可按需选择:
无代码折中方案(无需启用宏/脚本)
- 不要将复选框直接放置在存值为1的目标单元格中,将复选框放在相邻列(如目标单元格为A1,复选框放在B1)
- 选中A1单元格,设置条件格式,规则选择「使用公式确定要设置格式的单元格」,输入公式
=B1=TRUE,设置符合条件时填充色为蓝色,默认填充色保留白色 - 完成后将B列列宽调整为0或直接隐藏,点击B列对应位置即可切换A1的填充色,A1内的数值1不会发生任何变动
VBA方案(适用于Excel,点击目标单元格直接触发)
- 打开对应工作表,按下
Alt + F11调出VBA编辑器 - 在左侧项目面板双击当前工作表名称,粘贴如下代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' 仅对值为1的单元格生效 If Target.Value = 1 Then ' 切换填充色 If Target.Interior.Color = RGB(255,255,255) Then Target.Interior.Color = RGB(0,0,255) Else Target.Interior.Color = RGB(255,255,255) End If ' 自动偏移选中避免重复触发 Target.Offset(0,1).Select End If End Sub
- 将文件保存为
xlsm(启用宏的工作簿)格式即可生效
Apps Script方案(适用于谷歌表格)
- 打开目标表格,点击顶部菜单「扩展程序」-「Apps Script」
- 清空默认生成的代码,粘贴如下内容:
function onSelectionChange(e) { const cell = e.range; if (cell.getValue() === 1) { const currentBg = cell.getBackground(); cell.setBackground(currentBg === "#ffffff" ? "#0000ff" : "#ffffff"); // 偏移选中避免重复触发 cell.getSheet().getRange(cell.getRow(), cell.getColumn() + 1).activate(); } }
- 保存项目后刷新原表格即可生效
内容的提问来源于stack exchange,提问作者DearBee
相关产品推荐
相关产品推荐

