失去焦点时突出显示Microsoft Excel 2013中的活动单元格

时间:2014-09-27 12:01:15

标签: excel vba excel-vba vbscript

我通常使用分屏,比较两张或更多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,当我们点击另一个单元格时,我们再次给它原始颜色吗?什么是最好的解决方案?

2 个答案:

答案 0 :(得分: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的值不会丢失,并且是使用Global的有用替代方法。

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

此版本使用条件格式方法,该方法不会替换任何现有着色: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。

答案 1 :(得分:0)

尝试使用其他电子表格程序。如果微软看到有足够多的人从这个bug上移开Excel,那么他们就会修复它。我说这对Excel开发团队来说是一个简单的解决方案,除非他们都离开并去了Google :-) Google Docs电子表格没有这个错误!