如何用vba实现聚光灯高亮行列单元格的功能?

在wps中有个聚光灯功能,可以实现高亮选中的单元格所在的行和列。

在excel中虽然没有内置这个功能,但是可以通过vba代码实现类似的效果。

如下动画所示:

在Sheet1模块中插入如下的Worksheet_SelectionChange事件代码,即可实现简单的聚光灯功能:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count = 1 Then
        Dim oWK As Worksheet
        Dim oRng As Range
        Set oWK = Excel.ActiveSheet
        Set oRng = Target.CurrentRegion
        Dim oFC As FormatCondition
        iRow = Target.Row
        iCol = Target.Column
        sF = "=OR(ROW()=" & iRow & ",COLUMN()=" & iCol & ")"
        iCol = oRng.FormatConditions.Count
        '先删除原来的条件格式
        For Each oFC In oRng.FormatConditions
            oFC.Delete
        Next
        '添加以公式为判断依据的条件格式
        Set oFC = oRng.FormatConditions.Add(xlExpression, , sF)
        With oFC
            '设置条件格式的填充色
            .Interior.Color = vbYellow
        End With
    End If
End Sub

以上代码的原理是用条件格式来实现聚光灯功能。

       

发表评论