计算条件颜色的函数给出了#error

时间:2015-02-01 22:58:54

标签: excel vba excel-vba

我有一个Excel 2010函数,它不断返回#value错误。

该函数计算一个范围内的单元格数,这些单元格是基于指定单元格定义的特定颜色。

我无法真正使用CountIF,因为条件公式很复杂。

如果我将使用该功能选择的相同范围定义为VBA中的Sub,则可以正常工作。

我哪里出错?

Function CountCellsByConditionColor(rData As Range, cellRefColor As Range) As Long    

    Dim indRefColor As Long
    Dim cntRes As Long
    Dim cntCells As Long
    Dim indCurCell As Long

    Application.Volatile

    cntRes = 0
    indRefColor = cellRefColor.DisplayFormat.Interior.Color
    cntCells = rData.CountLarge

    For indCurCell = 1 To cntCells
        If indRefColor = rData(indCurCell).DisplayFormat.Interior.Color Then
            cntRes = cntRes + 1
        End If
    Next

    CountCellsByConditionColor = cntRes        

End Function

1 个答案:

答案 0 :(得分:0)

事实证明,您不能直接在工作表中使用DisplayFormat函数,请参见另一个帖子here或直接在MSDN here上。

但是,您可以尝试将此函数与Worksheet_Change触发器结合使用。它不会像拥有自己的UDF一样具有实际意义,但结果可能会令人满意,具体取决于完成结果的动态或复杂程度。