EP02. “Highlight Active Cell 高亮活动单元格”
🔒 登录后可标记已读- 用 Worksheet 的 SelectionChange 事件,实现「每次切换选取的单元格,自动把该单元格所在的行和列高亮」的效果
- 类似很多阅读模式表格常见的十字高亮
- 前置知识:EP01 的事件绑定方法
- 学完能理解怎么用双层 For 循环配合 Interior.ColorIndex 做单元格底色处理
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
绑定 SelectionChange 事件
- 打开 VBE,双击 Sheet1
- 左边下拉选 Worksheet,右边下拉选 SelectionChange
[截图:VBE 代码窗口上方左右两个下拉选单,左边选 Worksheet、右边选 SelectionChange]
完整代码
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rowNumberValue As Integer, columnNumberValue As Integer, i As Integer, j As Integer
Cells.Interior.ColorIndex = 0
rowNumberValue = ActiveCell.Row
columnNumberValue = ActiveCell.Column
For i = 1 To rowNumberValue
Cells(i, columnNumberValue).Interior.ColorIndex = 37
Next i
For j = 1 To columnNumberValue
Cells(rowNumberValue, j).Interior.ColorIndex = 37
Next j
End Sub
Cells.Interior.ColorIndex = 0:先清掉整张表原本的底色,避免上一次高亮的痕迹留着rowNumberValue/columnNumberValue:记录目前选中的单元格是第几行第几列- 第一个 For 循环:把从第 1 行到目前行号、同一列的所有单元格底色改成 ColorIndex 37(淡蓝色),画出「列」的高亮
- 第二个 For 循环:同样逻辑画出「行」的高亮
- ColorIndex 37 是淡蓝色,可以换成任何合法的 ColorIndex 数字
实操示例
在 Sheet1 任意点选不同单元格,观察选中位置对应的整行整列是否自动被淡蓝色底色标出。
[截图:点选某个单元格后,该单元格所在的整行整列都被淡蓝色底色标出的十字高亮效果]
学完你会
- ✅ 用 SelectionChange 事件实现「跟着选取自动更新」的效果
- ✅ 用
ActiveCell.Row/.Column拿到当前选中位置的坐标 - ✅ 用
Interior.ColorIndex批量设置一整行/一整列的底色,并知道要先清空旧状态
常见错误
- 忘记先
Cells.Interior.ColorIndex = 0清空底色,导致每次切换单元格,旧的高亮痕迹越叠越多 - ColorIndex 用错数字,误以为跟 RGB 色码一样直接填,实际上 ColorIndex 是 Excel 内建的固定色盘编号(1-56)
- 这个事件在大表格上频繁触发两层循环,如果表格很大(几千行),切换单元格时会感觉到明显卡顿
Sources
Blog / Website: