【问题标题】:Highlighting active cell in Microsoft Excel 2013 when loosing focus失去焦点时突出显示 Microsoft Excel 2013 中的活动单元格
【发布时间】:2017-02-21 22:20:30
【问题描述】:

我通常使用分屏,比较两个或多个 Excel 工作表或在线研究信息,然后将其放入工作表中。 Excel 可以很好地突出显示被单击的活动单元格,但是如果我进入浏览器或其他工作表,突出显示被禁用,那么就很难记住你在哪里。

一种解决方案是添加我在某处找到的 VBase 代码,以突出显示活动单元格。

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Cells.Interior.ColorIndex = xlNone
Target.Interior.ColorIndex = 19 'Background Yellow
End Sub

这个问题是,假设一个列在我点击它之前是红色的,当它现在失去焦点时,旧的红色信息已经消失并且没有颜色。我们可以将之前的信息写入一个变量,然后突出显示yello,当我们单击另一个单元格时,我们再次赋予它原来的颜色吗?最好的解决方案是什么?

【问题讨论】:

    标签: vba excel vbscript


    【解决方案1】:

    这是一个忽略任何预先存在的颜色的简单方法:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Static rng As Range
        If Not rng Is Nothing Then rng.Interior.ColorIndex = xlNone
        Set rng = Target
        rng.Interior.Color = vbYellow
    End Sub
    

    使用Static 声明意味着rng 的值在方法退出时不会丢失,并且是使用全局的有用替代方法。

    当您更改选择时,它会取消之前的选择。但是,正如您所注意到的,它也不会重新应用该范围在您选择它之前的任何阴影...

    此版本使用条件格式方法,它不会替换任何现有的阴影:CF 阴影会覆盖任何现有的填充颜色。

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Static rng As Range
    
        If Not rng Is Nothing Then rng.FormatConditions.Delete
        Set rng = Target
        With rng.FormatConditions.Add(Type:=xlExpression, Formula1:="=TRUE")
            .Interior.PatternColorIndex = xlAutomatic
            .Interior.Color = 49407
        End With
    End Sub
    

    当 CF 被移除时,任何现有的阴影都将像以前一样显示。

    如果您可能要选择整列单元格,则可以考虑将操作限制为仅工作表上的 UsedRange。

    【讨论】:

    • 非常感谢您的回复。第一个代码的工作方式与我的类似,它突出显示单元格,但在失去焦点时会覆盖预先存在的颜色。您发布的第二个代码在 Excel 2013 中看不到任何内容。
    【解决方案2】:

    尝试不同的电子表格程序。如果微软看到有足够多的人因为这个错误而离开 Excel,那么他们会修复它。我想说这对 Excel 开发团队来说很容易解决,除非他们都离开并去了 Google :-) Google Docs 电子表格没有这个错误!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      相关资源
      最近更新 更多