Excel 临时单元格高亮显示,恢复原始单元格颜色

Excel 临时单元格高亮显示,恢复原始单元格颜色,excel,vba,highlight,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

我想制作一个宏,高亮显示所选行,但在高亮显示结束后(不再选择单元格后)不会更改原始单元格颜色。 *(原始单元格颜色:原始指定单元格的颜色。)

这是我使用的代码

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
子工作表\u选择更改(以Excel.Range形式显示的ByVal目标)
静态X行
如果X行为“”,则
带行(xRow)。内部
.ColorIndex=Xlnone
以
如果结束
船头=选择。行
xRow=船头
带排(船头)。内部
.ColorIndex=6
.Pattern=XlSolid
以
端接头
但是当我使用这样的代码时,Highlight是活动的,但是原始单元格的颜色会改变。

如何修复它?

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

  • 在模块中添加以下功能:

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

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

    =IsSelected()
    

  • .ColorIndex=X | none
    是无效语法。它应该是
    xlNone
    xlSolid
    。我建议激活
    Option Explicit
    :在VBA编辑器中,转到工具›选项›以避免类似的打字错误。啊,对不起,这是打字错误。。不是|,我想写l(l)。。对不起,我想你正在寻找这样的东西:谷歌上有几个关于如何突出显示单元格、行和列的教程。使用其中一个,这样你就不需要自己发明了。“我不是美国人,所以我不擅长英语”-没关系,美国人也不擅长英语-如果你想保留原色,你必须将其存储在某个地方,而不是将其擦除。非常感谢你的回答,我现在就做:D@Chae-HeeKim如果它解决了您的问题,请将其标记为解决方案: