Vba listobj刷新后excel自定义项未更新
我有一个excel自定义项作为listobj(excel表格)的列之一。当我刷新表时,我得到了关于udf是否计算的混合结果。一些细胞重新计算出一些返回值。如果我选择一个#值单元格并在公式栏中单击,然后单击“检查”,它的计算结果将正确。或者,如果我将其复制到列中,它将正确计算。 我已将工作表更改事件添加到。计算listobj 任何建议都将不胜感激 这是我的用户定义函数Vba listobj刷新后excel自定义项未更新,vba,excel,Vba,Excel,我有一个excel自定义项作为listobj(excel表格)的列之一。当我刷新表时,我得到了关于udf是否计算的混合结果。一些细胞重新计算出一些返回值。如果我选择一个#值单元格并在公式栏中单击,然后单击“检查”,它的计算结果将正确。或者,如果我将其复制到列中,它将正确计算。 我已将工作表更改事件添加到。计算listobj 任何建议都将不胜感激 这是我的用户定义函数 Function colorscore(dest, score) Dim scr scr = score Select Case
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
看起来您有两种分数定义:一种是udf的参数,另一种是已定义的命名分数。
然后使用[score]符号计算定义的名称
因此Excel不知道存在对已定义名称分数的依赖性,因此当您更改已定义名称分数时,UDF不会重新调用我冒昧地用缩进方式缩进您的代码,使其实际可读。完全公开,我是该项目的贡献者。@YowE3K-不。当我缩进时,我发现缩进时“缩进案例”设置错误,当我手动修复它时,很明显没有设置。哎呀!自动化的另一个很好的理由。。。修正。我不确定我是否理解你关于“定义名称”分数的意思。我做了一些修改,去掉了括号,将传入的UDF score参数赋给了一个变量。但还是像以前一样。我还添加了工作表更改事件背后的代码。