Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba listobj刷新后excel自定义项未更新_Vba_Excel - Fatal编程技术网

Vba listobj刷新后excel自定义项未更新

Vba listobj刷新后excel自定义项未更新,vba,excel,Vba,Excel,我有一个excel自定义项作为listobj(excel表格)的列之一。当我刷新表时,我得到了关于udf是否计算的混合结果。一些细胞重新计算出一些返回值。如果我选择一个#值单元格并在公式栏中单击,然后单击“检查”,它的计算结果将正确。或者,如果我将其复制到列中,它将正确计算。 我已将工作表更改事件添加到。计算listobj 任何建议都将不胜感激 这是我的用户定义函数 Function colorscore(dest, score) Dim scr scr = score Select Case

我有一个excel自定义项作为listobj(excel表格)的列之一。当我刷新表时,我得到了关于udf是否计算的混合结果。一些细胞重新计算出一些返回值。如果我选择一个#值单元格并在公式栏中单击,然后单击“检查”,它的计算结果将正确。或者,如果我将其复制到列中,它将正确计算。 我已将工作表更改事件添加到。计算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

看起来您有两种分数定义:一种是udf的参数,另一种是已定义的命名分数。
然后使用[score]符号计算定义的名称


因此Excel不知道存在对已定义名称分数的依赖性,因此当您更改已定义名称分数时,UDF不会重新调用

我冒昧地用缩进方式缩进您的代码,使其实际可读。完全公开,我是该项目的贡献者。@YowE3K-不。当我缩进时,我发现缩进时“缩进案例”设置错误,当我手动修复它时,很明显没有设置。哎呀!自动化的另一个很好的理由。。。修正。我不确定我是否理解你关于“定义名称”分数的意思。我做了一些修改,去掉了括号,将传入的UDF score参数赋给了一个变量。但还是像以前一样。我还添加了工作表更改事件背后的代码。