【问题标题】:Temporary cell highlighting, reverting the original cell color临时单元格突出显示,恢复原始单元格颜色
【发布时间】:2019-04-22 16:41:36
【问题描述】:

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

这是我使用的代码

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

但是当我使用这样的代码时,突出显示处于活动状态,但原始单元格颜色发生了变化。

我该如何解决?

【问题讨论】:

  • 这个.ColorIndex=X|none 不是有效的语法。应该是xlNone 和xlSolid。我建议激活 Option Explicit:在 VBA 编辑器中转到 Tools › Options › Require Variable Declaration 以避免出现这样的拼写错误。跨度>
  • 啊,打错字了抱歉..不是|,我想写l(L)..抱歉
  • 我认为您正在寻找类似的东西:atlaspm.com/toms-tutorials-for-excel/… Google 上有几个教程如何突出显示单元格、行和列。使用其中之一,这样您就不需要自己发明了。
  • “我不是美国人,所以我不擅长英语” - 没关系,美国人也不擅长英语。 :-P
  • 如果您想保留原始颜色,您必须将其存储在某个地方,而不是删除它。

标签: excel vba highlight


【解决方案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()
    

【讨论】:

猜你喜欢
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
相关资源
最近更新 更多