VBA代码返回#value错误

我试图在Excel中显示条件格式的颜色。 在Excel中,我简单地使用= CheckColour(B5)例如,当我打回来它的作品。 但是,当我要求表单计算时,函数会给出#VALUE! 我不知道我哪里错了。 任何帮助表示赞赏,因为我是VBA的初学者。 谢谢

Function CheckColour(range) If range.DisplayFormat.Interior.Color = RGB(255, 0, 0) Then CheckColour = "Red" ElseIf range.DisplayFormat.Interior.Color = RGB(0, 130, 59) Then CheckColour = "Green" Else CheckColour = "Amber" End If End Function 

是的,因为:

请注意,DisplayFormat属性在用户定义的函数中不起作用 。 例如,在返回单元格的内部颜色的工作表函数中,可以使用类似于以下内容的直线:Range(n).DisplayFormat.Interior.ColorIndex。 当工作表函数执行时,它会返回一个#VALUE! 错误。 Ref 。

而是使用:

 range.Interior.Color 

这个(简化的例子)似乎适用于我:

 Public Function CheckColour(src As Range) Application.Volatile CheckColour = src.Parent.Evaluate("GetColor(" & src.Address(False, False) & ")") End Function Public Function GetColor(src As Range) GetColor = src.DisplayFormat.Interior.Color End Function