使用Worksheet_SelectionChange覆盖条件格式

时间:2015-04-25 19:35:51

标签: excel vba events formatting

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

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

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

有没有人知道解决这个问题而不删除条件格式? 例如。我可以暂时禁用所选行,并在取消选择行时重新启用它吗?

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

1 个答案:

答案 0 :(得分:5)

您无需在 Worksheet_SelectionChange 事件宏中使用 ActiveCell 。这就是目标是/。

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规则的格式。

Conditional Formatting Override