【问题标题】:Override Conditional Formatting with Worksheet_SelectionChange使用 Worksheet_SelectionChange 覆盖条件格式
【发布时间】:2016-04-09 05:47:21
【问题描述】:

我在工作表中有一些代码可以突出显示选定单元格的行。但是,此工作表具有为某些行着色的条件格式。突出显示宏不适用于满足格式条件的行(在某种意义上,突出显示的颜色不会覆盖条件格式的颜色)。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

   Cells.Interior.ColorIndex = xlColorIndexNone 
    ActiveCell.EntireRow.Interior.ColorIndex = 19 'Highlight row
End Sub

有没有人知道在不删除条件格式的情况下解决这个问题的方法? 例如。我可以对选定的行暂时禁用它并在取消选择该行时重新启用它吗?

格式是适用于所有单元格的一条规则。我认为理论上我可以为每一行(大约 500 行)创建一个独立的规则,然后完全关闭它,然后重新应用它,但这似乎有点过火了。

【问题讨论】:

    标签: excel vba events formatting


    【解决方案1】:

    没有必要在您的 Worksheet_SelectionChange 事件宏中使用 ActiveCell。这就是 Target 是/所做的。

    修改您的 Worksheet_SelectionChange 使其更接近以下内容。

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Target.Name = "mySelection"
        Cells.Interior.Pattern = xlNone
        Target.EntireRow.Interior.ColorIndex = 19
    End Sub
    

    现在您将不断地为每个新选择的单元格重新定义一个命名范围

    您没有透露 CF 规则实际上是什么,所以我假设这是非空白的突出显示单元格。将现有的 CF 规则修改为 使用公式来确定要格式化哪些单元格 品种并调整以下内容以适合您自己的 CF 规则,然后将其放入该公式所在的 格式值中true: 文本框。

    =AND(A1<>"", ROW(A1)<>ROW(mySelection))
    

    通过在 AND 函数中添加布尔标准并不断将 mySelection 范围重新定义为当前选择,您可以覆盖 CF 规则的格式。

            

    【讨论】:

    • 太棒了。谢谢你。我并不是特别希望解决这个问题,更不用说这么整洁了。当我现在选择一个有条件格式化的单元格然后选择另一个单元格时,CF 单元格会变成白色,直到我选择第三个单元格,此时它将返回到其格式化颜色。有没有办法解决这个问题?
    • 我无法重现该行为(请参阅my sample here),但我遇到过类似的情况,其中包含大量格式的工作簿,其中 CF 规则似乎不会立即生效。考虑发布您的工作簿的编辑副本以供直接检查。
    • @user2842721 - 您可以尝试从 Worksheet_SelectionChange 中删除 ColorIndex 分配,并根据=ROW(A1)=ROW(mySelection) 使背景颜色填充它自己的 CF 规则。将命名范围重新定义保留在 Worksheet_SelectionChange 中,但让新的 CF 规则提供行突出显示。
    • 问题是由我的公式设置为手动引起的。猜测您可能一直在自动运行,因此看不到相同的内容。在我的代码末尾添加了“计算”,现在一切都很好。再次感谢您的帮助。
    • 这就像一个永无止境的问题,这个!工作表中还有一些其他 VBA 代码可以使用 CF 刷新工作表中的数据。它实际上所做的是清除工作表的内容,运行 SQL 查询并将输出粘贴回工作表。当 SQL 表中没有任何更新时,工作表看起来与以前完全相同的 post 宏。出于某种原因,运行此宏后,选择一个单元格并突出显示需要 4-5 秒(底部有一个显示“更新单元格”的加载栏)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多