UDF并不总是有效 - 刷新到[空单元格]

时间:2015-08-05 15:44:55

标签: excel excel-vba user-defined-functions vba

我将以下UDF保存在工作簿的模块中:

Function sumAbove(cel As Range) As Double
Dim firstCell As Long
Dim i As Integer

'Application.Volatile '(False)
firstCell = cel.Row

While Not cel.Offset((cel.Row - firstCell) * -1, 0).NumberFormat = "0.00%"
    firstCell = firstCell - 1
Wend
sumAbove = WorksheetFunction.Sum(Range(Cells(firstCell + 1, cel.Column), cel))

ActiveSheet.EnableCalculation = True
End Function

该功能可以正常工作,但我的问题是工作簿似乎在某种程度上"删除"工作表中的sumAbove。即我把=SumAbove(b4)放到了68。大!然后,如果我进入电子表格中的另一个工作表,添加图表,执行操作等等,然后返回,单元格将显示#Value!发生了什么,为什么会这样这样做?

我的工作簿计算设置为自动,我添加.EnableCalculation这应该有所帮助。

有点奇怪的是,当上述UDF无法正确计算时,以下公式会出现#Value错误: =IF(AND(A69<>"",D70<>""),TEXT(A69,"m/dd/yyyy")&" Average Row","")即使该公式中没有任何内容与sumAbove单元格相关。我必须转到单元格,点击F2Enter,然后它会解析为正确的输出。

我的工作簿可能会发生什么?感谢您的任何想法/建议!

编辑:请注意 - 我确实有两个其他UDF,但没有一个在工作表更改或单元格更改上运行,它们只是&#34;常规&#34;功能。我已将Application.Volatile (false)添加到我的UDF中,但这并没有改变任何内容。正如@legendjr指出的那样,我认为这是由于Volatility在某处...但我的页面中的数据根本没有变化,所以即使函数是不稳定的,也不会有这个功能只是重置为它的价值?

Edit2:也许值得注意 - 当我能够sumAbove工作时,只有我点击的单元格刷新到了值...其他sumAbove单元格才会停留{{1} }

0 个答案:

没有答案