临时突出显示单元格,还原原始单元格颜色

时间:2018-11-20 09:09:24

标签: excel vba excel-vba highlight

我想制作一个宏,突出显示选定的行,但是一旦突出显示结束(一旦不再选择该单元格),就不会更改原始单元格的颜色。 *(原始单元格颜色:最初指定的单元格的颜色。)

这是我使用的代码

Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Static xRow
If xRow <> "" Then
    With Rows(xRow).Interior
         .ColorIndex=Xlnone
    End with
End If

pRow = Selection.Row
xRow = pRow

With Rows(pRow).Interior
.ColorIndex=6
.Pattern=XlSolid
End With
End Sub

但是当我使用这样的代码时,突出显示处于活动状态,但原始单元格颜色已更改。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

可行的方法(未进行测试)是使用条件格式更改颜色,从而使其始终自动恢复原始颜色。不确定此解决方法的性能如何。

  1. 在模块中添加以下功能:

    Public Function IsSelected() As Boolean
        IsSelected = Not Intersect(Application.Caller, Range("SelectedRange")) Is Nothing
    End Function
    
  2. 在所需的工作表中添加以下事件:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Me.Names.Add "SelectedRange", Target
    End Sub
    
  3. 在所需范围内,添加以下条件的格式:

    =IsSelected()
    
相关问题