#value错误返回excel用户定义的函数

时间:2018-06-18 22:58:43

标签: excel vba

我创建了用户定义的函数来计算足球比赛结果。

My Root Function看起来:

Function calculatePoints(personTypes As Range, matchesResults As Range) As Integer
    calculatePoints = getAllPersonPoints(personTypes, matchesResults)
End Function

getAllPersonPoints函数:

Private Function getAllPersonPoints(personTypes As Range, matchesResults 
AsRange) As Integer
    Dim x As Long
    Dim y As Long
    Dim isTheSurest As Boolean
    getAllPersonPoints = 0

    For x = 1 To personTypes.Rows.Count
        For y = 1 To personTypes.Columns.Count
            isTheSurest = isTheSurestResult(personTypes.Cells(x, 
y).DisplayFormat.Interior.PatternColorIndex)
            getAllPersonPoints = getAllPersonPoints + 
getPoints(matchesResults.Cells(x, y).Value, personTypes.Cells(x, y).Value, 
isTheSurest)
        Next y
    Next x
End Function

当我试图通过手动设置参数来调用此函数时:personTypes range和matchesResults ragne - everythink工作正常。

但是当我试图从表格中调用它时,我在所选单元格中出现#VALUE错误。

#VALUE error at cell

但是在功能形式上有正确的结果:

Correct value returned by function

A一直试图调试返回值,并且总是得到正确的值。我只有返回单元格中的错误才有问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

问题是DisplayFormat对象不适用于UDF'

请参阅MSDN article

通常的解决方案是评估条件格式条件以确定哪个条件处于活动状态。例如,see cpearson.com

答案 1 :(得分:0)

我通过代码解决了问题:

personTypes.Cells(x, y).Interior.ColorIndex

代替:

personTypes.Cells(x,y).DisplayFormat.Interior.PatternColorIndex

此解决方案有效。