我想要一个返回条件格式化的单元格的颜色索引值的函数。
它用于检查一行中的多个单元格(如果它们使用条件格式突出显示),则需要执行一项操作-检查单元格中是否有颜色而不是创建组合的条件公式更为简单涵盖所有牢房的状况。还是我想..
下面的代码返回一个#VALUE错误,尽管该代码在msg框中起作用。
Function fillcolour(rng as Range) as variant
fillcolour=rng.Displayformat.Interior.ColorIndex
End Function
期望看到返回的颜色索引的值但得到#VALUE
答案 0 :(得分:1)
要使用更改事件,请执行以下操作:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Call fillcolour(Cells(1, 1))
Application.EnableEvents = True
End Sub
Function fillcolour(ring As Range) As Variant
fillcolour = ring.DisplayFormat.Interior.Color
Cells(1, 2) = fillcolour
End Function
每次更改单元格的内容时,它将为您显示单元格B1中的背景颜色(即使它来自条件格式)。
但是,此事件返回带有导致事件的行和列的目标(Target.Row,Target.Column等)。您可以使用此目标来检测直接在单元格上所做的更改。
在新的计算过程中像元发生更改时,不会发生此事件。使用Calculate事件来检测您的范围/单元格中的变化。
答案 1 :(得分:0)
您尝试过吗?:
Function fillcolour(ring as Range) as variant
fillcolour=rng.DisplayFormat.Interior.Color
End Function
将其分配给单元的事件更改
答案 2 :(得分:0)
请查看此link,以了解出现此问题的原因。您不能在用户定义的函数中使用DisplayProperty
。它在VBA环境中或从“消息框”调用时有效,但在“工作表”中调用时无效。解决方法是从代码中删除.DisplayFormat
,如下所示:
Function fillcolour(rng as Range) as variant
fillcolour=rng.Interior.ColorIndex
End Function
答案 3 :(得分:0)
感谢Asger在这里提供帮助。我现在有如下功能:
Function CFCheck(rng as range) as Integer
CFCheck = rng.FormatConditions.Count
End Function
因此,如果返回的值> 0,它便可以触发操作
在进一步测试中发现,此功能只是区分具有CF的单元格与不具有CF的单元格,这对我有帮助,但在我所处的情况下没有帮助。我需要一些东西来查看具有CF的单元格,但CF尚未应用颜色,因为未满足条件。