鼠标随动指定区域高亮显示(Excel聚光灯)

2024-01-09 15:12:40

实例需求:工作表中数据表实现跟随鼠标选中高亮效果,需要注意如下几个细节需求

  • 数据表为连续区域,但是不一定从A1单元格开始
  • 数据表的前两行(标题行)不使用高亮效果
  • 数据表中已经应用了条件格式,高亮显示取消后,不应破坏已经设置的条件格式
  • 如果选中整列,则不启用高亮显示

演示效果如下图所示。

请添加图片描述
示例代码如下。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rowsRng As Range, useRng As Range, oFC As FormatCondition
    Set useRng = Me.UsedRange.Resize(Me.UsedRange.Rows.Count - 2).Offset(2)
    For Each oFC In useRng.FormatConditions
        If oFC.Formula1 = "=TRUE" Then oFC.Delete
    Next
    If Target.Rows.Count < Me.Rows.Count Then
        Set rowsRng = Application.Intersect(Target.EntireRow, useRng)
        If Not rowsRng Is Nothing Then
            Set oFC = rowsRng.FormatConditions.Add(Type:=xlExpression, Formula1:="True")
            With oFC
                .SetFirstPriority
                .Interior.Color = RGB(255, 235, 156)
                .StopIfTrue = True
            End With
        End If
    End If
End Sub

【代码解析】
第3行代码获取需要设置高亮显示的数据表区域(不含标题行)。
第4~6行代码遍历数据表区域中的条件格式,根据公式删除Worksheet_SelectionChange事件创建的条件格式,如果数据表中没有使用其他条件格式,那么无需判断,全部清除即可。
第7行代码判断是否选中了整列。
第8行代码获取选中区域所在行与数据表区域的交叉部分(下文中成为高亮区域)。
第9行代码判断高亮区域是否为空。
第10行代码在高亮区域添加一个条件格式,其公式为=TRUE
第12行代码设置条件格式最高优先级。
第13行代码设置高亮填充颜色。
第14行代码设置条件为真则停止,避免被其他条件格式覆盖。

文章来源:https://blog.csdn.net/taller_2000/article/details/135478973
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。