我有一个excel udf作为listobj(excel表)的列之一。当我刷新表格时,我会得到关于udf是否计算的混合结果。一些细胞重新计算一些返回#value。如果我选择#value单元格并单击公式栏并单击“检查”,则会正确评估。或者,如果我将其复制到列中,则可以正确计算。 我已经为.calculate listobj添加了一个工作表更改事件。
任何建议表示赞赏。
这是我的用户定义函数。
Function colorscore(dest, score)
Dim scr
scr = score
Select Case scr
Case Is = 99
srcred = 255
srcgreen = 0
srcblue = 0
Case Is > 0
srcred = (1 - scr) * 255
srcgreen = 255 - ((255 - 176) * scr)
srcblue = scr * 80
Case Else
srcred = 255
srcgreen = 255
srcblue = 255
End Select
dest.Parent.Evaluate "ChangeIt2(" & dest.Address(False, False) & "," _
& srcred & "," _
& srcgreen & "," _
& srcblue & "" _
& ")"
colorscore = "Changed sheet!" 'or whatever return value is useful...
End Function
Sub ChangeIt2(c1 As Range, c2red, c2green, c2blue)
c1.Interior.Color = RGB(c2red, c2green, c2blue)
End Sub
这是工作表更改事件
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.ListObject Is Nothing Then Exit Sub
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
End Sub
答案 0 :(得分:0)
看起来你有两个得分定义:一个是udf的参数,另一个是定义的命名得分。
然后使用[score]表示法评估定义的名称。
所以Excel不知道定义的名称得分存在依赖性,因此当您更改定义的名称得分时UDF不会重新计算