Microsoft Lab
全部软件
Excel事件(Events)约 5 分钟

Highlight Active Cell 高亮活动单元格

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


绑定 SelectionChange 事件

  1. 打开 VBE,双击 Sheet1
  2. 左边下拉选 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 任意点选不同单元格,观察选中位置对应的整行整列是否自动被淡蓝色底色标出。

📷 画面提示

点选某个单元格后,该单元格所在的整行整列都被淡蓝色底色标出的十字高亮效果


学完你会

常见错误

  • 忘记先 Cells.Interior.ColorIndex = 0 清空底色,导致每次切换单元格,旧的高亮痕迹越叠越多
  • ColorIndex 用错数字,误以为跟 RGB 色码一样直接填,实际上 ColorIndex 是 Excel 内建的固定色盘编号(1-56)
  • 这个事件在大表格上频繁触发两层循环,如果表格很大(几千行),切换单元格时会感觉到明显卡顿

Sources

Blog / Website:

  1. Highlight Active Cell
只记在你的浏览器里,换设备不会同步。